常用代码:二分查找 递归和非递归形式
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
using namespace std;
int search(int a[], int start , int end, int key){
if (start >= end)
return -1;
int mid = (start + end) / 2;
if (a[mid] == key)
return mid;
if (a[mid] < key)
return search(a, mid + 1, end, key);
else
return search(a, start, mid - 1, key);
}
int Bin_search(int a[], int start, int end, int key){
while (start <= end){
int mid = (start + end) / 2;
if (a[mid] == key)
return mid;
else{
if (a[mid] > key)
end = mid - 1;
else
start = mid + 1;
}
}
return - 1;
}
int main()
{
int a[5] = { 1, 6, 7, 9, 10 };
cout << search(a, 0, 4, 11) << endl;
cout << Bin_search(a, 0, 4, 6) << endl;
return 0;
}