二分查找
来源:互联网 发布:数据多用什么图表 编辑:程序博客网 时间:2024/06/05 01:08
二分查找又称折半查找,它是一种效率较高的查找方法。 时间复杂度:O(log2N)
【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。
<pre name="code" class="java">public class BinarySearch { public static void main(String[] args) { int[] src = new int[] {1, 3, 5, 7, 8, 9,10}; System.out.println(binarySearch(src, 3)); System.out.println(binarySearch(src, 4)); System.out.println(binarySearch(src,3,0,src.length-1)); } /** * * 二分查找算法 * * * * @param srcArray * 有序数组 * * @param des * 查找元素 * * @return des的数组下标,没找到返回-1 */ public static int binarySearch(int[] srcArray, int des){ int low = 0; int high = srcArray.length-1; while(low <= high) { int middle = (low + high)/2; if(des == srcArray[middle]) { return middle; }else if(des <srcArray[middle]) { high = middle - 1; }else { low = middle + 1; } } return -1; } /** *二分查找特定整数在整型数组中的位置(递归) *@paramdataset *@paramdata *@parambeginIndex *@paramendIndex *@returnindex */ public static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){ int midIndex = (beginIndex+endIndex)/2; if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){ return -1; } if(data <dataset[midIndex]){ return binarySearch(dataset,data,beginIndex,midIndex-1); }else if(data>dataset[midIndex]){ return binarySearch(dataset,data,midIndex+1,endIndex); }else { return midIndex; } } }
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 基带芯片 争夺焦点
- 如何去掉待机界面默认的google搜索框
- 云计算智能交通行业论坛:多家知名企业分享应用实践
- 常识做原始的方法程序员的抉择
- 2014年上半年软件设计师考试之绝密答案--有待大家完善
- 二分查找
- ffmpeg 解码h264数据
- Excel列编号英文字母字符生成及转义算法
- HDU 1016 Prime Ring Problem(简单回溯)
- Mapped Statements collection does not contain value for的解决方法
- 【原创】解决在Word中插入公式后行距变宽的问题(word2003)
- win/linux遍历目录
- 不要学习代码,要学会思考
- 关于恰好装满背包的背包问题的理解