順序查詢和二分法查詢

2021-08-26 04:47:02 字數 836 閱讀 5156

順序查詢:對錶中的元素排序無要求,但如果表中各個元素的查詢概率並不相等,則應先對元素的查詢概率進行排序,使表中元素的查詢概率由小到大重新排列,以便提高查詢概率。

二分法查詢:折半查詢的效率比順序查詢高,但折半查詢只適用於有序表,且限於順序儲存結構(對鏈式儲存無效)。

typedef int elemtype;

//遍歷輸出容器物件

void print_vector(vector&vec)

//二分法查詢,只適用於有序序列

int search_bin(vector&vec, elemtype key)

return 1;

}int main()

{ //演示

vectorvec(11);

for(int n=1; n<=10; ++n)

vec[n] = 2*n+1;

print_vector(vec);

cout<<"順序查詢"<

結果:0 3 5 7 9 11 13 15 17 19 21

順序查詢

7二分法查詢

7

假設序列中有n個元素,且每個元素的查詢概率相等,則順序查詢的平均查詢長度為:(n+1)/2;二分法的平均查詢長度為:log(n+1)-1

當然,上面是假設成功查詢時的情況。如果待查詢的元素不存在,則順序查詢的查詢長度為(n+1);二分法的查詢長度為 :[log(n)]+1。

二分法查詢

前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...

二分法查詢

演算法 當資料量很大適宜採用該方法。採用二分法查詢時,資料需是排好序的。主要思想是 設查詢的陣列區間為data start,end 1 確定該期間的中間位置pos將查詢的值m與data pos 比較。若相等,查詢成功返回此位置 否則確定新的查詢區域,繼續二分查詢。區域確定如下 data pos m ...

二分法查詢

二分法查詢 對有序元素集合的查詢,又叫折半查詢。思路 假設公升序 將查詢元素與集合中間元素比較,相等則返回 若查詢元素小於集合中間元素,則在集合左半部分進行二分查詢 若查詢元素大於集合中間元素,則在集合右半部分進行二分查詢 首先判斷要查詢的範圍正確性,如果查詢開始位置大於結束位置則返回未找到 sf....