二分查找之我的理解

说到查找方法,不得不提到这个二分法查找,这个算法的实现本身不难,但这个思想,二分天下,化繁为简,一下子将数据的查找量砍掉了一半,层层定位,逐步排除不合适的数据,直到最后一个为止。相对以往的从头至尾的遍历,可以说是极大的进步。并且很多算法思想,以及框架设计都是基于此。 

 

二分加递归,简单的代码即可实现超强的功能。

 

但是,二分法如此强大,还有一个原因,它是建立在数据有序的基础上。但是万一数据无序,它就无从下手了。所以,它能工作的前置的条件,有一个强大的排序算法帮它将数据整理为有序。

 

贴出代码如下:

public class BinarySearch {
	public static int binarySearch(int[] a, int key) {
		if (a.length == 0)
			return -1;
		int first = 0;
		int last = a.length - 1;
		int mid;
		while (first <= last) {
			mid = (first + last) / 2;
			if (a[mid] == key)
				return mid;
			if (a[mid] > key)
				last = mid - 1;
			if (a[mid] < key)
				first = mid + 1;
		}
		return -1;
	}

	public static void main(String[] args) {
		int[] a = { 1, 3, 4, 5, 8, 7, 9, 11, 15 };
		System.out.println(binarySearch(a, 9));
	}
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值