二分查找法
概述
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,二分查找要求数组数据必须采用顺序存储结构有序排列。
原理:
假设数组中的值按照某个顺序排序后,我们在数组中查找某个元素的位置,我们将要查找的值和数组中间的值进行比较,如果中间的值比我们要查找的值大,那么说明我们要查找的值在中间值的左边,反之,就在右边。
示例代码:
public static void main(String[] args) {
System.out.println("二分查找法");
int [] numbers1 = new int[1000];
for (int i=0;i<numbers1.length-1;i++){
numbers1[i] = i;
}
halfFind(numbers1,100);
}
/**
* 二分查找法
* @param numbers
* @param target
* @return
*/
private static int[] halfFind(int[] numbers,int target) {
Arrays.sort(numbers);
int left = 0;
int right = numbers.length - 1;
while (left < right) {
int mid = left + (right - left) / 2;
if (numbers[mid] == target) {
System.out.println("目标值的" + target + "索引为:" + mid);
break;
} else if (numbers[mid] < target) {
left = mid;
} else {
right = mid;
}
}
return numbers;
}