码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-09-10 21:52:42      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:有序数组   amp   images   pre   end   图解   logs   时间复杂度   image   

  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博主皓皓松

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

标签:有序数组   amp   images   pre   end   图解   logs   时间复杂度   image   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!