天天看點

使用二分查找向一個有序數組中插入一個資料

折半查找法找到一個元素在數組中的下标
 * @param arr 數組
 * @param key 要查找的元素
 * @return 找到則傳回元素在數組中的下标,如果沒找到,則傳回這個元素在有序數組中的位置
 * 如:[1,4,6,7,10,11,15],查找8在數組中的位置,如果存在則返1,不存在則傳回在7這個下标+1的這個位置上,
  也就是說在傳回10所在位置上的下标
 */
public static int arrayIndexOf(int[] array,int key) {
	int min,max,mid;
	min = 0;
	max = array.length - 1;
	
	while(min <= max) {
		
		mid = (min + max) >> 1;
	
		if (key > array[mid]) {
			min = mid + 1;
		} else if (key < array[mid]) {
			max = mid - 1;
		} else {
			return mid;
		}
	}
	return min;
}
           

轉載于:https://www.cnblogs.com/cdx19971126/p/6142467.html