前提:当数据量很大,且数据需是有序不重复的。
使用场景:看到题目:数组有序,查找---------一般都会用二分查找。
时间复杂度:O(log(N))
例如:假设有一个数组,现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1。
public static int search(int[] arr, int key) { int start = 0; int end = arr.length - 1; while (start <= end) { int middle = (start + end) / 2; if (key < arr[middle]) { end = middle - 1; } else if (key > arr[middle]) { start = middle + 1; } else { return middle; } } return -1; }