- 二分查找简介
- 实现(java)
- 时间复杂度
1.二分查找
- 有序表查找, 与中间元素比较, 比中间元素小, 在左半区域查找, 比中间元素大, 在右半区域查找
- 数组必须有序
2.实现(java)
public class BinarySearch {
public static void main(String[] args) {
int[] arr = {5, 19, 21, 35, 40, 52, 63, 77, 82, 96};
int index = search(arr, 82);
if(-1 != index) {
System.out.println("查询成功, 元素位于数组第" + (index + 1) + "位");
}else {
System.out.println("查询失败");
}
}
public static int search(int[] arr, int key) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if(key < arr[mid]) {
high = mid - 1;
}else if(key > arr[mid]) {
low = mid + 1;
}else {
return mid;
}
}
return -1;
}
}
3.时间复杂度
时间复杂度为O(log2n)