首页 > 代码库 > 算法之二分查找

算法之二分查找

最近没有管理好自己的情绪,哎...

上班之余,研究一下算法也不错,本人比较喜欢数学,只要被让我被英文单词怎么都好,哈哈,研究算法算是本人的小爱好吧,做好每天从头开始的准备,从头开始,今天就从二分查找开始.

二分查找又称折半查找,查找的速度比较快,次数比较少,性能比较好,但是二分查找一般是对已经排过序的进行查找,相对来说插入和删除比较不好操作.今天就以一个小的例子来研究一下二分查找

已知数组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等,这个随意...共同交流,一起进步

算法之二分查找