一、前言
二分法查找又称为折半查找,二分法查找的基本思想是把数组中的元素从小到大有序地存放进数组中,首先将给定值与数组中间位置的值作比较,如果相等,则匹配成功。否则,若比较值小了,则在数组的前半部分继续二分法查找;若比较值大了,则在数组后半部分进行二分法查找。如此循环往复,直到比较值与中间值匹配,完成查找。
二、代码实现
/**
* 二分法查找
*/
public class BinarySearch {
public static void main(String[] args) {
int[] array = {81, 51, 88, 15, 59, 20, 1, 50, 66, 77};
//打印数组
System.out.println(Arrays.toString(array));
//对数组进行排序
Arrays.sort(array);
//打印排序数组
System.out.println(Arrays.toString(array));
int index = binarySearch(array, 77);
System.out.println("查找的值为:77,下标为:" + index);
}
public static int binarySearch(int[] arrays, int value) {
if (arrays.length <= 0) {
return 404;
}
int low = 0;
int high = arrays.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (arrays[mid] == value) {
return mid;
}
if (value < arrays[mid]) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return 404;
}
}
以下是输出结果,其中第一行是未排序的数组,第二行是排序完的数组:
输出结果
网友评论