您的位置:首页 > 职场人生

二分查找,递归与非递归实现

2015-09-08 08:56 465 查看
每次经理带我去面试别人,都会问一个二分查找的算法,我用惯了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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息