查找算法之——二分查找
来源:互联网 发布:郑州java程序员工资 编辑:程序博客网 时间:2024/04/27 09:51
1、二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好。
2、其缺点是要求待查表为有序表,且插入删除困难。
3、折半查找方法适用于不经常变动而查找频繁的有序列表,原理如下:
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
4、代码实现如下:
1)递归方式
/** * 递归实现 * * @return */ public int search(int[] src, int start, int end, int key) { int mid = (end - start) / 2 + start; if (key == src[mid]) { return mid; } if (start >= end) { return -1; } else if (key < src[mid]) { return search(src, start, mid - 1, key); } else { return search(src, mid + 1, end, key); } }
/** * 非递归实现 * * @return */ public int search(int[] src, int key) { int lowerBound = 0; int upperBound = src.length - 1; while (true) { int midBound = (lowerBound + upperBound) / 2; if (key == src[midBound]) { return midBound; // found it } else if (lowerBound > upperBound) { return -1; // can't find it } else { if (key < src[midBound]) { upperBound = midBound - 1; // it's in upper half } else { lowerBound = midBound + 1; // it's in lower half } } } }
0 0
- 查找算法之——二分查找
- 算法——查找之二分查找
- 常见查找算法之—二分查找
- 算法之—二分查找算法
- python算法之——二分查找
- 算法之旅——二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- C查找算法——二分查找
- 算法之二分查找
- 算法之二分查找
- 系统分析与设计——MVC与WEB
- 查看电脑已安装的Jdk的位数
- 【解题报告】uva10066_The Twin Towers(双塔, dp, LCS)
- 百度编辑器ueditor给上传的图片添加水印
- ubuntu系统中安装php的curl扩展
- 查找算法之——二分查找
- jQuery Easyui Validatebox rules的常用扩展
- 通过WMI接口,修改VisualSVN用户密码
- c# 数组 数组列表 列表 foreach
- NSLog效率低下的原因及尝试lldb断点打印Log
- Socket网络编程学习之路 第五篇 ----winsock网络IO模型(2)之 重叠IO模型
- 第十四周工作日志
- 数据挖掘:数据挖掘Apriori算法
- jquery控制select的值,选中状态