二分查找算法

原创 2015年07月08日 15:02:18
public class BinarySearch {

	public static int binarySearch(int[] a, int start, int end, int des) {

		while (start <= end) {
			int middle = (start + end) / 2;
			if (des == a[middle]) {
				return middle;
			} else if (des < a[middle]) {
				end = middle - 1;//待查找的值小于中间值则在中间值左边查找,将右边界的end置中间值下角标的前一位
			} else {
				start = middle + 1;//待查找的值大于中间值则在中间值的右边查找,将左边界的start置中间值下角标的后一位
			}
		}
		return -1;//没有则返回-1
	}
  //测试
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] a = { 1, 3, 6, 7, 8, 10 };
		System.out.println(binarySearch(a, 0, 5, 8));
	}


时间复杂复杂度计算:二分查找的基本思想是将n个元素分成大致相等的两部分,去a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x.


时间复杂度无非就是while循环的次数!


总共有n个元素,


渐渐跟下去就是n,n/2,n/4,....n/2^k,其中k就是循环的次数


由于你n/2^k取整后>=1


即令n/2^k=1


可得k=log2n,(是以2为底,n的对数)


所以时间复杂度可以表示O()=O(logn)

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

【算法分析】查找算法:二分查找、顺序查找

08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活。此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de...

【算法-查找之二】二分查找

算法-查找之二二分查找           顺序查找【算法-查找之一】顺序查找是最简单的查找策略,易于分析,适用于小规模数据。如果数据规模很大时,顺序查找的表现就不尽人意,此时需要寻找一...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

查找算法 - 二分法查找

当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。 基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数...

查找算法之二分法查找

本文利用Java实现二分法查找 思想: 在二分查找算法中,数列已经排好序,对于要搜索的数字,我们从中间的数开始搜索,如果目标数小于中间数,则无需搜索右边的数,因为右边的数都大于中间的数,直接搜索左...

算法:二分法查找

在java中,我们常用的查找有两种: 1、顺序查找 2、二分查找(数列必须是有序的)   二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除...
  • lissdy
  • lissdy
  • 2012-08-27 09:41
  • 1104

查找算法之二分查找算法

查找算法之二分查找算法1. 概述二分查找算法也称折半查找算法,是在有序数组中用到的较为频繁的一种查找算法。在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,即顺序查找。二...
  • zhliro
  • zhliro
  • 2015-07-23 08:08
  • 1643

查找算法 顺序查找 二分查找 二叉树查找 算法

package lengreen.struct.other; import lengreen.struct.Strategy; import lengreen.struct.impl.BinaryT...

[转载]查找算法----二分查找

二分查找 1、二分查找(Binary Search)        二分查找又称折半查找,它是一种效率较高的查找方法。        二分查找要求:线性表是有序表,即表中结点按关键字有序,并...

经典查找算法 - 二分查找

二分查找又称为折半查找,仅适用于事先已经排好序的顺序表。其查找的基本思路:首先将给定值K,与表中中间位置元素的关键字比较,若相等,返回该元素的存储位置;若不等,这所需查找的元素只能在中间数据以外的前半...

算法——查找之二分查找

对于查找,我们最容易想到的就是遍历了,但是当数组很大的时候,遍历查找的开销是很大的,时间复杂度是O(n)。 而二分查找的开销就小了很多,时间复杂度是O(logn)。但是它是有前提条件的,数组...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)