每次經理帶我去面試別人,都會問一個二分查找的算法,我用慣了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;
}