二分查找的时间复杂度为O(logn),操作次数和二叉树的高度相关。
使用前提:1.线性表采用顺序存储 2.线性表必须有序(如从小到大)。
public class BinarySearch {
public static void main(String[] args) {
int[] array = {1, 2, 4, 5, 6};
BinarySearch binarySearch = new BinarySearch();
System.out.println(binarySearch.search(array, 5));
}
public int search(int[] array, int target) {
//数组最小下标
int low = 0;
//数组最大下标
int high = array.length - 1;
while (low <= high) {
//折半下标
int middle = (low + high) / 2;
if (target > array[middle]) {
//往后半区域查找
low = middle + 1;
} else if (target < array[middle]) {
//往前半区域查找
high = middle - 1;
} else {
//找到目标元素
return middle;
}
}
//元素不存在
return -1;
}
}