二分法算法代码

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值