入門之二分搜索
阿新 • • 發佈:2017-07-22
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) returnbinary_search(k,l,m-1); 39 else binary_search(k,m+1,r); 40 }
入門之二分搜索