#include<stdio.h>
int binSearch(const int *Array,int start,int end,int key)
{
int left=start, right=end;
int mid=0;
while(left<right)
{
mid=left+(right-left)/2; //防溢出
//注释中为递归算法,执行效率低,不推荐
/* if (key<Array[mid])
{
return(binSearch(Array,left,mid,key));
}
else if(key>Array[mid])
{
return (binSearch(Array,mid+1,right,key));
}
else
return mid;
*/
if(key<Array[mid])
right=mid-1;
else if (key>Array[mid])
left=mid+1;
else
return mid ;
}
// return -1;
{
int a[]={1,2,3,4,5,6,7,8,9};
int b,c,d;
printf("Please input the searching number: ");
scanf("%d", &c);
printf("%d\n",c);
if (c < 0 || c > 9) return -1 ;
printf("The sequence number is :%d \n", binSearch(a,0,8,c));
}
int binSearch(const int *Array,int start,int end,int key)
{
int left=start, right=end;
int mid=0;
while(left<right)
{
mid=left+(right-left)/2; //防溢出
//注释中为递归算法,执行效率低,不推荐
/* if (key<Array[mid])
{
return(binSearch(Array,left,mid,key));
}
else if(key>Array[mid])
{
return (binSearch(Array,mid+1,right,key));
}
else
return mid;
*/
if(key<Array[mid])
right=mid-1;
else if (key>Array[mid])
left=mid+1;
else
return mid ;
}
// return -1;
}
/ 实现方式2 :
/*
int binarysearch(int number)
{
int mid, start = 0, end = LEN - 1;
while (start <= end) {
mid = (start + end) / 2;
if (a[mid] < number)
start = mid + 1;
else if (a[mid] > number)
end = mid - 1;
else
return mid;
}
return -1;
}
*/
int main(){
int a[]={1,2,3,4,5,6,7,8,9};
int b,c,d;
printf("Please input the searching number: ");
scanf("%d", &c);
printf("%d\n",c);
if (c < 0 || c > 9) return -1 ;
printf("The sequence number is :%d \n", binSearch(a,0,8,c));
}