//迭代法实现
#include <stdio.h>
#include <stdlib.h>
int bin_search(int * arr,int key,int Count)
{
int mid;
int low = 0;
int high = Count;
while(low <= high)
{
mid = (mid + high)/2;
if(arr[mid] > key)
high = mid - 1;
else if(arr[mid] < key)
low = mid + 1;
else
return mid;
}
return -1;
}
int main()
{
int num[10] = {1,3,4,52,56,78,99,100,234,334};
int rev ;
rev = bin_search(num,334,10);//返回数组下标号
if( rev!= -1)
{
printf("%d\n",rev);
}
else
printf("Not Found!\n");
return 0;
}
//递归法实现
#include <stdio.h>
#include <stdlib.h>
int bin_search(int * arr,int Count, int key, int low, int high)
{
if(low > high)
return -1;
int mid = (low + high)/2;
while(low <= high)
{
mid = (mid + high)/2;
if(arr[mid] > key)
return bin_search(arr, Count, key, low, mid-1);
else if(arr[mid] < key)
return bin_search(arr, Count, key, mid+1, high);
else
return mid;
}
}
int main()
{
int num[10] = {1,3,4,52,56,78,99,100,234,334};
int rev ;
rev = bin_search(num,10,334,0,10 - 1);//返回数组下标号
if( rev!= -1)
{
printf("%d\n",rev);
}
else
printf("Not Found!\n");
return 0;
}
备份地址: 【迭代和递归分别实现二分查找】