首页 > 编程语言 > 详细

二分查找(针对有序数组)

时间:2017-09-10 21:29:16      阅读:267      评论:0      收藏:0      [点我收藏+]

  9/10/2017,简写一个封装好的二分查找,适用于C/C++


 

正文如下:

  

int Binary_search(DateType *a,DateType K,const DateType n)
{
	int beg = 1,end = n;
	mid = beg + (end - beg)/2;
	while((mid != end) && (a[mid] != K))
	{
		if(a[mid] < K)
			beg = mid + 1;
		else
			end = mid;
		mid = beg + (end -beg)/2;				
	} 
	if(a[mid] == K)
		return mid;
	else
		return -1;
}

最坏情况是a[1] or a[n] = k,假设需要二分m次,则有:
n/2 n/4 n/8 ... n/(2^m) = 1;
得2^m = n,所以时间复杂度为O(lg(n))

图解如下:

  技术分享

 (图片来源于CSDN博主皓皓松

二分查找(针对有序数组)

原文:http://www.cnblogs.com/Bw98blogs/p/7502120.html

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