Java程序实现二进制搜索

二进制搜索是一种运行时间复杂度为O(log n)的快速搜索算法。这种搜索算法基于分而治之的原理。为了使该算法正常工作,数据收集应采用排序形式。

二进制搜索通过比较集合中最中间的项来查找特定项。如果发生匹配,则返回该项目的索引。如果中间项目大于该项目,则在中间项目左侧的子数组中搜索该项目。否则,将在中间项目右侧的子数组中搜索该项目。该过程也将在子数组上继续进行,直到子数组的大小减小到零为止。

示例

public class BinarySearch {
   public static void main(String args[]){
      int array[] = {10, 20, 25, 57, 63, 96};
      int size = array.length;
      int low = 0;
      int high = size-1;
      int value = 25;
      int mid = 0;
      mid = low +(high-low)/2;

      while(low<=high){
         if(array[mid] == value){
            System.out.println(mid);
            break;
         }
         else if(array[mid]<value)
         low = mid+1;
         else high = mid - 1;
      }
      mid = (low+high)/2;
   }
}

输出结果

2