码迷,mamicode.com
首页 > 其他好文 > 详细

二分查找递归实现

时间:2015-04-23 09:34:14      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:c   二分查找   递归   

// 表里没有相等元素,正确二分查找写法

#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

二分查找递归实现

标签:c   二分查找   递归   

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

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