//递归查找
#include <stdio.h>
int main()
{
int BinarySearch(int low, int high, int num);
int n, y;
printf("请输入要查找的数:");
scanf("%d",&n);
y = BinarySearch(1, 11, n);
if(y < 0)
{
printf("查找失败!\n");
}
else
{
printf("查找成功!\n");
printf("%d\n",y);
}
return 0;
}
int BinarySearch(int low, int high, int num)
{
int a[11]={5,13,19,21,37,56,64,75,80,88,92};
int mid;
if(low > high)
{
return -1;
}
mid = (low + high) / 2;
if(a[mid] == num)
{
return mid;
}
else if(a[mid] < num)
{
return BinarySearch(mid + 1, high, num);
}
else
{
return BinarySearch(low, mid - 1, num);
}
}
//非递归查找
#include <stdio.h>
int halffind(int a[], int num, int key)
{
int low = 0;
int mid;
int high = num - 1;
if(low > high)
{
return -1;
}
while(low <= high)
{
mid = (low + high) / 2;
if(key == a[mid])
{
return mid;
}
if(key > a[mid])
{
low = mid + 1;
}
if(key < a[mid])
{
high = mid -1;
}
}
return -1;
}
int main()
{
int n, key_mid;
int b[11] = {5, 13, 19, 21, 37, 56, 64, 75, 80, 88, 92};
printf("enter the key:");
scanf("%d",&n);
key_mid = halffind(b, 11, n);
if(key_mid != -1)
{
printf("The find is successful!\n");
printf("%d\n",key_mid);
}
else
{
printf("The find is wrong!\n");
}
}