插值查詢(按比例查詢) 資料結構和演算法70

2022-09-05 14:39:11 字數 405 閱讀 2460

讓程式設計改變世界

change the world by program

順序查詢演算法的時間複雜度是o(n),不算太好,也不能再差了。那有沒有更好的查詢演算法呢?

那是必須的!我們接下來繼續介紹效率更高的方法,也是屬於靜態查詢的範疇。

話說有一天,小甲魚突發奇想,要回顧下我國的古代四大奇書,大家應該沒人不知道四大奇書是什麼吧?四大奇書就是:「寶哥哥的金箍棒讓潘金蓮樂不思蜀。」,於是小甲魚就跑到了當地的圖書館......
現在我們的新問題是,為什麼一定要折半呢,而不是四分之一或者折更多呢?

鑑於這種常識,我們的科學家們認為也可以在折半查詢法的基礎上進行改造改造,因此就誕生了插值查詢法,當然我覺得叫「按比例查詢法」好像更合適。

插值查詢(按比例查詢)

插值查詢的乙個最簡單案例就是查字典,查abandon的時候,我們都是從最前面開始找的,不可能從字母m開始,然後再用二分查詢吧?插值查詢就是根據要查詢的關鍵字 key 與查詢表中最大最小記錄的關鍵字比較後的查詢方法,其核心在於插值的計算公式,如圖 粗俗理解 目標陣列大概在陣列的幾分之幾的位置 畫個相似...

資料結構 插值查詢(演算法)

插值查詢演算法類似於二分查詢,所以陣列同樣要求必須有序,不同的是插值查詢每次從自適應mid處開始查詢。有序陣列中值與索引之間類似於線性關係,故通過公式求自適應索引。二分查詢中秋mid索引的公式,左邊索引 left,右邊索引 right,待查詢值 findvalue eg 陣列 arr 50 個數 假...

資料結構與演算法(11)插值查詢

聯想一下自己在字典中查詢單詞的經歷,我們肯定不會使用折半查詢,因為對於分布有規律的單詞而言,我們有更好的方式。我們會使用大腦的自適應計算出單詞的大概位置,一步步縮減範圍。類似的對於分布有規律的資料元素來說,我們可以改進一下折半查詢的軸點,不使用中點,而是使其可以根據lo 和 hi的位置上元素的大小進...