【算法】简单的二分查找算法

一个简单的二分查找算法:


import java.util.Arrays;
public class BinarySearch {
    public static int rank(int key,int[] a)
    {
        int lo=0;
        int hi=a.length-1;
        while (lo<=hi)
        {
            int mid=lo+(hi-lo)/2;
            if (key<a[mid])hi=mid-1;
            else if (key>a[mid])lo=mid+1;
            else return mid;
        }
        return -1;
    }
    public static void main(String[] args)
    {
        int[] whilelist={84,48,36,12,14,74,35,93};
        Arrays.sort(whilelist);
//        System.out.println(whilelist);
        int[] sc={84,48,36,100,123};
        System.out.println(sc.length);
        for (int i=0;i<sc.length;i=i+1)
        {
            int key=sc[i];
            if (rank(key, whilelist) < 0)
                System.out.println(key);
        }
    }
}

        简单描述:算法由静态方法rank()实现,它接受一个整数键和一个有序的int数组作为参数,如果整数存在于数组,返回它的索引,否则返回-1,算法使用两个变量lo和hi,并保证整数如果存在于数组中则它一定存在于a[lo...hi]中,然后通过循环不断查找,每次查找如果没有查找到就将查找范围缩小一半。

        二分查找法之所以快是因为它只需要查找很少几个条目就能找到目标元素。

相关推荐

  1. 简单二分查找(C++算法

    2024-01-13 14:40:02       63 阅读
  2. 二分查找算法

    2024-01-13 14:40:02       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 14:40:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 14:40:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 14:40:02       82 阅读
  4. Python语言-面向对象

    2024-01-13 14:40:02       91 阅读

热门阅读

  1. Educational Codeforces Round 160 (Rated for Div. 2)题解

    2024-01-13 14:40:02       54 阅读
  2. c# _表示未使用的变量引用

    2024-01-13 14:40:02       62 阅读
  3. c# 人脸识别的思路

    2024-01-13 14:40:02       58 阅读
  4. json类型转换对象含有泛型

    2024-01-13 14:40:02       50 阅读
  5. C程序训练:大数相乘与阶乘的计算

    2024-01-13 14:40:02       64 阅读
  6. nginx配置

    2024-01-13 14:40:02       61 阅读