二分查找算法
来源:互联网 发布:无线网搜索不到网络 编辑:程序博客网 时间:2024/05/30 04:29
二分查找算法
二分查找又叫折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求被查找的表示有序表,且插入删除数据困难。所以,折半查找适合那些不经常变动但是查找频繁的有序列表。首先,假设有序表是按照升序排列的,以有序表的中间元素为分割点,把有序表为为左右两部分。取有序表中间的元素与待查值进行比较,如果待查值等于中间的元素,则返回待查值在有序表中的索引位置;如果待查值小于中间的元素,则在左侧部分继续查找待查值;如果待查值大于中间的元素,则在右侧部分继续查找待查值,依次循环,直到找到待查值为止。
二分查找的Java代码实现如下:
package com.csdn.algorithm;public class TestBinarySearch {/** * @param args */public static void main(String[] args) {int[] aAfterSortArray = new int[] { 1, 4, 8, 12, 20, 24, 60, 80, 90 };int nDestValue = 8;int nResult = binarySearch(aAfterSortArray, nDestValue);System.out.println("查找值的索引::" + nResult);//输出结果为2,即8在数值中的索引值为2}/** * 二分查找算法,查找指定值在数组中的索引 * * @param _aAfterSortArray * @param _nDestValue * @return */private static int binarySearch(int[] _aAfterSortArray, int _nDestValue) {// 1.参数验证if (_aAfterSortArray == null || (_aAfterSortArray.length == 0)) {return -1;}// 2.二分查找int nLow = 0;int nHigh = _aAfterSortArray.length;while (nLow < nHigh) {int nMiddle = (nLow + nHigh) / 2;if (_aAfterSortArray[nMiddle] == _nDestValue) {return nMiddle;} else if (_aAfterSortArray[nMiddle] < _nDestValue) {nLow = nMiddle + 1;} else {nHigh = nMiddle - 1;}}// 3.没有找到return -1;}}
- 查找算法 二分查找
- 查找算法:二分查找
- 算法--查找--二分查找
- 查找算法---二分查找
- [算法]二分查找算法
- 算法----二分查找算法
- 查找算法:二分查找算法
- [转载]查找算法----二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法_二分查找
- 算法 二分查找(折半查找)
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 家有千金之迎春杯少儿段级位赛
- 学习原则
- vc++ 如何得到程序运行时间
- 函数的副作用
- 在VS2010 里面包含进全局的include目录和lib目录
- 二分查找算法
- Visual Studio 2010下编译调试MongoDB源码
- C++标准库auto_ptr指针的应用
- Objective-C 入门
- [Android]直接使用代码建立Android视图元件
- 2011IT业界回顾~
- 如何在vs2008中编译调试apache源代码
- Android动画功能
- CentOS 5.4 安装和卸载桌面