1. 程式人生 > >入門之二分搜索

入門之二分搜索

mes style include [] 遞歸 二分搜索 class sea led

 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 }

入門之二分搜索