您的位置:首页 > 其它

递归入门(七) ---- 二分查找

2014-07-09 11:27 141 查看
在一个有序的数列中找到一个元素,我比较喜欢用二分,

就比如说:

1 3 5 7 9 11 13 15 17 19。。。。。。。。。。。。。。。。。

想在这里找到5怎么最快,应该是二分查找,首先排序,然后首先比较中间的和要查找的是否一样如果一样就输出,

如果大于中间的数,就在mid+1和最大的数之间进行查找,依次递归。

如果小于中间的数,就在mid-1和最小的数之间进行查找,依次递归。

代码:

//二分查找

#include <iostream>

#include <cstdio>

#include <cstring>

using namespace std;

const int MAXN = 1000;

int bin_search(int *p, int low, int high, int key)

{

int mid;

mid = (low + high)/2;

if(p[mid] == key)

return 1;

if(low > high)

return 0;

if(key > p[mid])

return bin_search(p, mid+1, high, key);

else

return bin_search(p, low, mid-1, key);

}

int main()

{

int a[1000];

for(int i=0; i < 1000; i++)

a[i] = i;

cout<<bin_search(a, 0, 999, 185)<<endl;

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: