zoukankan      html  css  js  c++  java
  • Java实现二分查找

    二分查找又称折半查找,优点是比较次数少,查找速度快,查找性能好,缺点是待查表需为有序表。因此,它适用于不经常变动需要频繁查询的列表。

    查找过程是:假设列表是按升序排列,先将表中间位置的元素与查找的元素比较,如果相等则返回。如果中间元素大于查找元素,则查找前一子表,否则,查找后一子表。重复以上步骤,如果查到相等的元素则返回,直到子表不存在为止,此时查找不成功。

    Java实现二分查找代码如下:

    public static int binarySearch(int[] arr, int des) {
            int low = 0;
            int high = arr.length - 1;
            while ((low <= high) && (low <= arr.length - 1)
                    && (high <= arr.length - 1)) {
                int middle = (high + low) >> 1;
                if (des == arr[middle]) {
                    return middle;
                } else if (des < arr[middle]) {
                    high = middle - 1;
                } else {
                    low = middle + 1;
                }
            }
            return -1;
        }

    算法复杂度O(log2n)

    假设有n个元素,需要查找数列依次为n,n/2,n/4,....n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数由于你n/2^k取整后>=1即令n/2^k=1可得k=log2n,(是以2为底,n的对数)所以时间复杂度可以表示O(h)=O(log2n)。

  • 相关阅读:
    Mybatis(4) 映射文件-参数处理
    Mybatis(3) 映射文件-增删改查
    Mabatis(2) 全局配置文件
    Mybatis(1) 创建Mybatis HelloWorld
    过滤器和拦截器之间的区别
    Redis(3) 配置文件 redis.conf
    Redis(2) 数据类型
    Redis(1) 初识Redis
    ActiveMQ(4) ActiveMQ JDBC 持久化 Mysql 数据库
    8.字典
  • 原文地址:https://www.cnblogs.com/lishenghua/p/6752777.html
Copyright © 2011-2022 走看看