二分算法
public static int findTwoPoint(int[] array, int key) {
int start = 0;
int last = array.length - 1;
while (start <= last) {
int mid = (last - start) / 2 + start;//防止直接相加造成int范围溢出
if (key == array[mid]) {//查找值等于当前值,返回数组下标
return mid;
}
if (key > array[mid]) {//查找值比当前值大
start = mid + 1;
}
if (key < array[mid]) {//查找值比当前值小
last = mid - 1;
}
}
return -1;
}
递归方式实现
public static int search(int[] array, int key, int low, int high) {
int mid = (high - low) / 2 + low;
if (key == array[mid]) {
return key;
} else {
while (low <= high) {
if (key < array[mid]) {//查找值比当前值小
return search(array, key, low, mid - 1);
}
if (key > array[mid]) {//查找值比当前值大
return search(array, key, mid + 1, high);
}
}
}
return -1;
}
浙公网安备 33010602011771号