#include<stdio.h>
#define COMPARE(x,y) ( (x<y) ? -1 :( (x==y ) ? 0: 1 ) )
int BinarySearch(int list[],int x,int left ,int right)
{
int middle;
while( left<=right )
{
middle=(left+right)/2;
switch( COMPARE( list[middle],x ) )
{
case -1: left=middle+1;
break;
case 0 : return middle;
case 1 : right=middle-1;
}
}
return -1;
}
int BinarySearchRecursive(int list[],int x,int left ,int right)
{
int middle;
if( left<=right )
{
middle=( left+right )/2;
switch( COMPARE(list[middle],x) )
{
case -1: return BinarySearchRecursive(list,x,left+1,right);
case 0: return middle;
case 1: return BinarySearchRecursive(list,x,left,middle-1);
}
}
return -1;
}
int main()
{
int a[10];
int i;
for( i=0 ;i<10;i++ )
a[i]=i;
int result=BinarySearchRecursive(a,3,0,9);
if(result==-1)
printf("search fail\n");
else
printf("%d %dth location in the array \n",a[result],result+1);
return -1;
}折半查找递归与非递归实现
最新推荐文章于 2020-04-13 21:28:10 发布
4655

被折叠的 条评论
为什么被折叠?



