二分法算法代码

时间:2021-02-18 04:04:39

1、二分法

二分法又叫折半查找,优点是比较次数少,查找速度快,平均性能好;

其缺点是要求待查表为有序表,且插入删除困难。

一般有两种实现方式:

递归方式和非递归方式

(1)非递归方式:

  public static void binarySearch(int[] arr,int des){

    int low=0;

    int high=arr.length-1;

    while(low<=high){

      int middle=(low+high)/2;

      if(arr[middle]>des){

        high=middle-1;

      }else if(arr[middle]<des){

        low=middle+1;

      }else{

        return middle;

      }

    }

      }

(2)递归方式:

  

public static int binarySearch(int[] arr,int des,int low,int high){ int middle = (low+high)/2; if (des<arr[low]||des>arr[high]||low>high) { return -1; } if (arr[middle]<des) { return binarySearch(arr, des, middle+1, high); }else if (arr[middle]>des) { return binarySearch(arr, des, low, middle-1); }else{ return middle; } }