二分查詢也屬於順序表查詢範圍,二分查詢也稱為折半查詢。二分查詢(有序)的時間複雜度為o(logn)。
那麼什麼是二分查詢呢?二分查詢的基本思想是, 在有序表中,取中間記錄作為比較物件,若給定值與中間記錄的關鍵字相等,則查詢成功;若給定值小於中間記錄的關鍵字,則在中間記錄的左半區繼續查詢;若給定值大於中間記錄的關鍵字,則在中間記錄的右半區繼續查詢。不斷重複上述過程,直到找到為止。
從二分查詢的定義我們可以看出,使用二分查詢有兩個前提條件:
1,待查詢的列表必須有序,這裡使用遞迴快排來使產生的隨機無序陣列有序。
2,必須使用線性表的順序儲存結構來儲存資料。
下面是c++實現**。
//用遞迴快速排序對隨機產生的一組無序陣列進行排序,再查詢給定的數字,並返回下標,2016.5.27
#include #include #include #include #define max 101
void input(int num)//實參傳入的陣列的首位址,而不是整個陣列
}void output(int num)
}int partition( int num, int low, int high)
num[low] = num[0];
return low;//最後high和low在某乙個位置相遇,就是切分部的值。
}void qsort(int num, int low, int high)//對隨機產生的無序陣列進行快速排序,這也是二分法的缺陷之一。
}int binaryfind(int num, int x, int low, int high)
}void main()
C 二分法查詢,遞迴二分法
用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...
python二分法查詢 Python 二分法查詢
二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...
二分法查詢
前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...