首页 > 代码库 > 算法之二分查找
算法之二分查找
最近没有管理好自己的情绪,哎...
上班之余,研究一下算法也不错,本人比较喜欢数学,只要被让我被英文单词怎么都好,哈哈,研究算法算是本人的小爱好吧,做好每天从头开始的准备,从头开始,今天就从二分查找开始.
二分查找又称折半查找,查找的速度比较快,次数比较少,性能比较好,但是二分查找一般是对已经排过序的进行查找,相对来说插入和删除比较不好操作.今天就以一个小的例子来研究一下二分查找
已知数组data=http://www.mamicode.com/{12,14,18,23,26,27,33,45,66,78,98},使用二分法查找98所在的位置:
下面是我写的代码进攻参考,你也可以使用其他方法,当然这里既然说的是二分查找,你就别用那种挨个比较的方法了.
package com.sd.thea.guo; /** * @author 子墨 * * 2015-2-1下午5:00:31 */ public class BinarySearch { /** * @param goal 查找的目标数 * @param data 查找的数组 * @return */ public static int rank(int goal, int[] data) { int start = 0; int end = data.length - 1; while (start <= end) { int mid = start + (end - start) / 2; if (goal<data[mid]) { end=mid-1; }else if (goal>data[mid]) { start=mid+1; }else { return mid; } } return -1; } /** * @param args */ public static void main(String[] args) { int[] data=http://www.mamicode.com/{12,14,18,23,26,27,33,45,66,78,98};>
简单介绍一下rank()方法,先获得中间下标,如果中间数比要找的数值大,继续查找左半段,否则查找右半段,如果输出的是-1,说明没有找到!
算法是本人的爱好,后续继续更新,从最简单的开始,还有就是本人用Java实现的,你也可以用C等,这个随意...共同交流,一起进步
算法之二分查找
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。