前言
对Java二分查找进行简单解释
一、二分查找是什么?
二分查找,又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置
的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,
则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。
二、示例
1.代码演示
代码如下(示例):
public class App {
public static void main(String[] args) {
int[] arr = { 1, 2, 5, 6, 7, 8, 41, 52, 63 };
int key = 1;
int position = commonBinarySearch(arr, key);
if (position == -1)
System.out.println("没有该数");
System.out.println("该数的位置是:" + position);
}
// 二分查找,while实现
public static int commonBinarySearch(int[] arr, int key) {
int low = 0;
int high = arr.length - 1;
int middle = 0;
while (low <= high) {
middle = (low + high) / 2;
if (arr[middle] > key) {
high = middle - 1;
// 比关键字大,则关键字在左区域
} else if (arr[middle] < key) {
low = middle + 1;
// 比关键字小,则关键字在右区域
} else {
return middle;
}
}
return -1;
// 没有找到,返回-1
}
}
2.结果演示
结果如下
总结
二分查找可以快速查找所需要查找的元素,但前提条件是原数据是有序的,不能无序