二分查找(折半查找):
前提: 数据已经有序排放在数组中,通过将待查的元素与数组最中间元素进行对比,如果大于中间值,则目标值可能存在于右半部分,否则可能在左半部分,查到为止
public static void main(String[] args) {
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };// 源数据
int key = 1;
int ret = biSearch(arr, key);
System.out.println(ret);
}
public static int biSearch(int arr[], int a) {
int start = 0;
int end = arr.length - 1;
int mid;
while (start <= end) {
mid = (start + end) / 2;
if (arr[mid] < a) {
start = mid + 1;
} else if (arr[mid] > a) {
end = mid - 1;
} else {
return mid;
}
}
return -1;//找不到
}
网友评论