码迷,mamicode.com
首页 > 其他好文 > 详细

入门之二分搜索

时间:2017-07-22 19:54:53      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:排序   blog   时间   search   搜索   logs   pre   log   复杂度   

 1 /*
 2 入门之二分查找
 3 时间复杂度:O(logn)
 4 只能查找已排序好的数组
 5 通过不断比较中间值,确定keyword在中间值的左边或右边,直到找到或结束
 6 */
 7 #include<iostream>
 8 using namespace std;
 9 int a[] = {1,2,3,4,5,6,7,8,9};
10 bool binary_search(int,int,int);
11 int main()
12 {
13     int key;
14     while(1){
15     cout << "keyword:";
16     cin >> key;
17     if(binary_search(key,0,8))
18         cout << "Find success" << endl;
19     else
20         cout << "Find failed" << endl;}
21 }
22 bool binary_search(int k,int l,int r)//循环实现
23 {
24     while(l <= r)
25     {
26         int m = (l + r)/2;
27         if(a[m] == k) return true;
28         else if(a[m] > k) r = m-1;
29         else l = m+1;
30     }
31     return false;
32 }
33 bool binary_search(int k,int l,int r)//递归实现
34 {
35     if(l > r) return false;
36     int m = (l + r)/2;
37     if(a[m] == k) return true;
38     else if(a[m] > k) return binary_search(k,l,m-1);
39     else binary_search(k,m+1,r);
40 }

 

入门之二分搜索

标签:排序   blog   时间   search   搜索   logs   pre   log   复杂度   

原文地址:http://www.cnblogs.com/qq188380780/p/7222250.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!