先介紹乙個概念,平均查詢長度(asl)為每乙個關鍵字出現的概率*查詢該關鍵所進行比較的次數,所有關鍵字這樣的值之和
一.簡單查詢
簡單查詢,也就是乙個個地比較了,不多說
int easy_find(char c,int n,char key)
else if (key>a[mid])
else if (key要注意兩點:
1.折半查詢只適用於順序儲存結構
2.折半查詢要求關鍵字事先是有序的
順便總結一下:事實上凡是用到了折半思路的演算法基本上都有這兩個要求,折半插入排序因為自身的原因,在尋找插入位置的時候,事先肯定是有序的
演算法分析:
因此,折半查詢的比較次數最少為1次,也就是只比較根節點,最多為|log2(n)|+1次,時間複雜度為o(log2(n)),平均查詢長度也是o(log2(n))級別的,具體值大約為log2(n+1)-1;
分塊查詢法:
思路:
將關鍵字分為若干塊,塊有以下特點
1.塊間有序:塊間的排序用塊內關鍵字的最大值比較而得
2.塊內無序
步驟:首先,用折半查詢來確定所查關鍵字所處的塊
然後,在塊內用簡單查詢
順序查詢和折半查詢
順序查詢可以是線性表也可以是鍊錶,同是既可以是有序的也可以是無序。折半查詢僅適用於有序的線性表 include include define elemtype inttypedef struct sstable 表的資料結構 void creatss sstable st 建立線性表 void pr...
查詢 折半查詢
折半查詢 int search keytype key,int n,keytype k return 1 查詢失敗,返回 1 在演算法中,n表示記錄的個數。key表示要查詢的關鍵字。key為關鍵字順序表,每個元素都是對應記錄的關鍵字。例如key 0 為第0個記錄的關鍵字。如果每條記錄的資訊與它的關鍵...
靜態查詢(順序查詢和折半查詢)
聽說過一句話,程式設計之久,除了資料結構和演算法什麼也不屬於我們。為了更好的學習資料結構和演算法,今天決定先把清華大學出版的資料結構 c語言版 書中的演算法實現一遍。現在開始第一彈。貴在堅持。順序查詢 演算法描述 include include 順序表的查詢 define eq a,b a b de...