二分法算法代码

Posted 薄荷*糖糖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分法算法代码相关的知识,希望对你有一定的参考价值。

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;
        }
    }

以上是关于二分法算法代码的主要内容,如果未能解决你的问题,请参考以下文章

如何使用伪代码开发线性搜索和二分搜索算法。?

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

PHP实现二分查找算法(代码详解)

相关简单算法代码(顺序,二分,冒泡,插入,选择等)

片段(Java) | 机试题+算法思路+考点+代码解析 2023

leetcode查找算法(顺序查找,二分法,斐波那契查找,插值查找,分块查找)