首页 > 其他 > 详细

二分查找

时间:2016-03-04 02:17:36      阅读:193      评论:0      收藏:0      [点我收藏+]
public class OrderFind {

	private int[] elems = { 5, 9, 34, 45, 65, 98, 145, 265 };

	public static void main(String[] args) {
		OrderFind a = new OrderFind();
		System.out.println(a.contains(145));
	}

	public int contains(int elem) {

		int lowerBound = 0;
		int upperBound = elems.length - 1;
		int curIn;
		// 1、判断是否有元素
		if (upperBound < 0) {
			return -1;
		}

		while (true) {
			// 2、取中间索引
			curIn = (lowerBound + upperBound) / 2;

			// 3、判断
			// (1)相等直接返回
			if (elem == elems[curIn]) {
				return curIn;

				// (2)判断中间索引与小索引是否相等
			} else if (curIn == lowerBound) {// 只有1或2个元素
				if (elem != elems[upperBound]) {
					return -1;
				}
			} else {
				// (3)修改中间索引
				if (elems[curIn] < elem) {
					lowerBound = curIn;
				} else {
					upperBound = curIn;
				}
			}
		}

	}
}

?

二分查找

原文:http://smallbug-vip.iteye.com/blog/2280152

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!