只针对有有序数组 定义三个指针,一个代表开头,一个代表末尾,一个代表中间值. 假设数组从小到大,因为有序,如果数值小于中间数,那么这个数只可能存在于中间数的左边,结尾指针移动到中间指后一位,针反这则在右边,每比完一轮,数少一半,没有找到再比,最终开头下标大于到最后都没有找到.则结束. public static void reduceSort(int[] arr,int x) { int start=0,end =arr.length-1,mid=(start+end)/2; while (start<=end) { if (x==arr[mid]) { System.out.println(mid); } if (x<arr[mid]) { end=mid-1; mid=(start+end)/2; } if (x>arr[mid]) { start=mid+1; mid=(start+end)/2; } } if (start>end) { System.out.println("数组里没有这个数"); } }
|