每次经理带我去面试别人,都会问一个二分查找的算法,我用惯了STL的算法,对于这些算法怎么实现,很少关注,但是他老是问这个。。。我就好奇了,反正闲来无事,看看怎么写吧。
#include <iostream>
using namespace std;
int digui_search(int arr[], int start , int end, int key){
if (start >= end)
return -1;
int mid = (start + end) / 2;
if (arr[mid] == key)
return mid;
if (arr[mid] < key)
return search(a, mid + 1, end, key);
else
return search(a, start, mid - 1, key);
}
int diedai_search(int arr[], int start, int end, int key){
while (start <= end){
int mid = (start + end) / 2;
if (arr[mid] == key)
return mid;
else{
if (arr[mid] > key)
end = mid - 1;
else
start = mid + 1;
}
}
return - 1;
}
int main()
{
int arr[5] = { 3, 8, 11, 22, 33 };
cout << digui_search(arr, 0, 4, 22) << endl;
cout << diedai_search(arr, 0, 4, 8) << endl;
return 0;
}