博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java实现二分查找
阅读量:5206 次
发布时间:2019-06-14

本文共 889 字,大约阅读时间需要 2 分钟。

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

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

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)。

 

转载于:https://www.cnblogs.com/lishenghua/p/6752777.html

你可能感兴趣的文章
Biee 11g权限详解
查看>>
minggw 安装
查看>>
Jquery操作cookie,实现简单的记住用户名的操作
查看>>
[BZOJ1196][HNOI2006]公路修建问题 二分答案+最小生成树
查看>>
PHP基础入门(二)
查看>>
[Luogu P3119] [USACO15JAN]草鉴定Grass Cownoisseur (缩点+图上DP)
查看>>
【原创】大数据基础之Zookeeper(4)应用场景
查看>>
18款在线代码片段测试工具
查看>>
20.C++- &&,||逻辑重载操作符的缺陷、,逗号重载操作符的分析
查看>>
静态变量数组实现LRU算法
查看>>
在SQL中怎么把一列字符串拆分为多列
查看>>
中文系统 上传file的input显示英文
查看>>
css样式写一个三角形
查看>>
比callback更简洁的链式执行promise
查看>>
android permission
查看>>
javascript获取textarea中所选文本的开始位置、结束位置和选择的文本
查看>>
【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
查看>>
事务备份还原分离附加
查看>>
JSch - Java实现的SFTP(文件上传详解篇)
查看>>
一些注意点
查看>>