二分法基本思想

前提:当数据量很大,且数据需是有序不重复的。

使用场景:看到题目:数组有序,查找---------一般都会用二分查找

时间复杂度: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;
   }
原文地址:https://www.cnblogs.com/mensan/p/10444879.html