很好用也很基本的一个算法,之前没写过,补一下。代码如下:
#include<iostream>
using namespace std;
int binarysearch(const int a[], int low,int high,int x)
{
if (low == high)
return a[low];
else {
for (size_t i = low; i < high; ++i)
{
int mid = (low + high) / 2;
if (x > a[mid])
{
return binarysearch(a, mid + 1, high, x);
}
else if (x < a[mid])
return binarysearch(a, low, mid - 1, x);
else if (x == a[mid])
return mid;
else
return -1;
}
}
}
int main()
{
int a[8] = { -2,0,8,90,451,490,5555,6678 };
int x;
cin >> x;
cout << binarysearch(a, 0, 7, x)+1 << endl;
return 0;
}