首页 > 其他 > 详细

二分查找递归实现

时间:2015-04-23 09:31:30      阅读:208      评论:0      收藏:0      [点我收藏+]
// 表里没有相等元素,正确二分查找写法

#include <stdio.h>

int binSearch(int a[],int n,int key)
{
	// 第一次调用时参数检查
	if(n <= 0)
		return -1;

	// 递归调用的参数检查
	if(n == 1 && a[0] != key)
		return -1;

	if(a[n/2]<key)
	{
		int index = binSearch(a+n/2,n-n/2,key);
		return index == -1 ? -1 : n/2+index;
	}
	else if(a[n/2]>key)
	{
		return binSearch(a,n/2,key);
	}
	else return n/2;
}

void main()
{
	int a[100000];
	for(int i=0;i<sizeof(a)/sizeof(int);i++)
		a[i] = i;
	int index = binSearch(a,sizeof(a)/sizeof(int),sizeof(a)/sizeof(int)-1);

	printf("index %d",index);
}


参考链接:

http://blog.csdn.net/drzhouweiming/article/details/1562717

二分查找递归实现

原文:http://blog.csdn.net/lonelyrains/article/details/45217067

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