資料結構 靜態查詢表

2021-10-09 08:47:41 字數 1498 閱讀 9647

順序表與線性鍊錶都可以表示靜態查詢表。兩者的實現靜態查詢表相似,這裡以順序表為例。

順序查詢就是從表中最後乙個記錄開始,逐個進行記錄關鍵字與給定值的比較,若某個記錄的關鍵字和給定值比較相等,則查詢成功,反之失敗。

對於順序查詢有一種技巧可以優化效率。

查詢之前先將key賦值給elem[0],搜尋從後向前搜尋,這樣可以免去每次迴圈都要檢查整個表是否搜尋完畢,這樣時間可以減少一半。當然監視哨也可以放在表尾。

int

search

(int num,

int&n,

int key)

無序表可以使用順序查詢,有序表除此以外還可以使用折半查詢。

折半查詢就是先確定待查記錄所在的範圍(區間),然後逐步縮小範圍直到找到或找不到記錄為止。

折半查詢的效率比順序查詢高,但折半查詢只使用於有序表,且限於順序儲存結構(對線性鍊錶無法有效地進行查詢)。

斐波那契查詢是根據斐波那契序列的特點對錶進行切割,在表中找到乙個關鍵字比某一斐波那契數小1,將這個關鍵字作為割點將陣列分為兩半,過程與折半查詢類似。

斐波那契查詢的平均效能比折半查詢好,但最壞情況下效能卻比折半查詢差。還有乙個優點就是分割時只需進行加減運算。

插值查詢是根據給定值key來確定進行比較的關鍵字的查詢方式。這種插值查詢只使用於關鍵字均勻分布的表,在這種情況下,對錶長較大的順序表,其平均效能比折半查詢好。

上一節對有序表的查詢效能都是在「等概率」的前提下進行的,即當各記錄的查詢概率相等時,按折半查詢效能最優。

那對於不同概率的查詢如何找到最優的查詢方法。需要乙個概念ph值即帶權平均查詢次數。

稱取ph值最小的二叉樹為靜態最優查詢樹。

由於構造靜態最優查詢樹花費的時間代價較高,因此這裡退而求其次我們研究次優二叉樹,

構造次優二叉樹的方法是每次取△p的最小值為根節點構建樹表

資料結構 靜態查詢表

從查詢說起 在英漢字典中查詢某個英文單詞的中文解釋 在新華字典中查詢某個漢字的讀音 含義 在對數表 平方根表中查詢某個數的對數 平方根 郵遞員送信件要按收件人的位址確定位置等等。從計算機 計算機網路中查詢特定的資訊,就需要在計算機中儲存包含該特定資訊的表。查詢是許多程式中最消耗時間的一部分。因而,乙...

資料結構 靜態查詢表

此為本人在學習資料結構時所寫的,各個功能能夠實現,有demo,node.h,tree.h,tree.cpp四個檔案,使用說明如下 按照要求,先進行建樹操作 然後按照輸出的介面選擇查詢操作即可 輸入的資料6 5 4 2 1 3 6。表示建立了一棵二叉鍊錶樹 54 6 21 3 在查詢時輸入 1,則進行...

資料結構 靜態查詢表

從查詢說起 在英漢字典中查詢某個英文單詞的中文解釋 在新華字典中查詢某個漢字的讀音 含義 在對數表 平方根表中查詢某個數的對數 平方根 郵遞員送信件要按收件人的位址確定位置等等。從計算機 計算機網路中查詢特定的資訊,就需要在計算機中儲存包含該特定資訊的表。查詢是許多程式中最消耗時間的一部分。因而,乙...