拓展二(2)
递归和分治思想(拆半查找法)
—递归—
int bina_search(int str[], int key, int low, int high)
{
int mid;
mid = (low+high)/2;
if(low > high)
{
return -1;
}
if(str[mid] == key)
{
return mid;
}
if(str[mid] < key)
{
return bina_search(str, key, mid+1, high);
}
if(str[mid] > key)
{
return bina_search(str, key, low, mid-1);
}
}
—迭代—
#include <stdio.h>
int bina_search(int str[], int key, int low, int high);
int bin_search(int str[], int n, int key)
{
int low, high, mid;
low = 0;
high = n-1;
while(low <= high)
{
mid = (low+high)/2;
if(str[mid] < key)
{
low = mid+1;
}
if(str[mid] > key)
{
high = mid-1;
}
if(str[mid] == key)
{
return mid;
}
}
return -1;
}
int main()
{
int str[11]={
1