二分搜索
0 ~ 10000之间数的二分搜索算法:
#include <iostream>
#define M 0
#define N 10001
using namespace std;
int Bsearch (int a[],int x,int low,int high);
int main(void)
{
int num[N];
int i,m,n,flag;
for (i = 0;i < N;i++)
num[i] = i;
cout << "please enter a number (n) and I will calculate n times:";
cin >> n;
while (n--)
{
cin >> m;
flag = Bsearch(num,m,M,N);
if (flag != -1)
cout << "I has found this number:" << flag << endl;
else
cout << "I can not find this number at 0 to 10000!" << endl;
}
return 0;
}
int Bsearch (int a[],int x,int low,int high)
{
if (low > high)
return -1;
else
{
int mid = (low + high) / 2;
if (x == a[mid])
return mid;
if (x < a[mid])
return Bsearch(a,x,low,mid-1);
else
return Bsearch(a,x,mid+1,high);
}
}