二分法算法代码

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;
        }
    }
原文地址:https://www.cnblogs.com/tangjiang-code/p/7657972.html