有序表查詢_折半查詢(二分查詢)
阿新 • • 發佈:2019-01-27
二分查詢前提是線性表中的記錄初始有序。時間複雜度O(logn)
程式碼如下:
#include <iostream> using namespace std; int Binary_Search(int *a, int n, int key) { int mid = 0; int high = n-1; int low = 0; while (low <= high) { mid = (low+high)/2; if(key < a[mid]) { high = mid-1; } else if (key > a[mid]) { low = mid+1; } else if (key == a[mid]) { return mid; } } return -1;//查詢失敗 } int main() { int a[10] = {1,2,3,4,5,6,7,8,9,10}; int key = 7; cout<<Binary_Search(a, 10, key)<<endl; key = 99; cout<<Binary_Search(a, 10, key)<<endl;//如果返回-1,則查詢失敗 getchar(); return 0; }
結果: