插值查找算法

從折半查找中能夠看出,折半查找的查找效率仍是不錯的。但是爲何要折半呢?爲何不是四分之1、八分之一呢?打個比方,在牛津詞典裏要查找「apple」這個單詞,會首先翻開字典的中間部分,而後繼續折半嗎?確定不會,對於查找單詞「apple」,咱們確定是下意識的往字典的最前部分翻去,而查找單詞「zero」則相反,咱們會下意識的往字典的最後部分翻去。因此在折半查找法的基礎上進行改造就出現了插值查找法,也叫作按比例查找。因此插值查找與折半查找惟一不一樣的是在於mid的計算方式上,它的計算方式爲:算法

mid = low + (high - low) * (searchValue - data[low]) / (data[high] - data[low])app

插值查找的時間複雜度也是O(log2n),可是對於數據集合較長,且關鍵字分佈比較均勻的數據集合來講,插值查找的算法性能比折半查找要好,其它的則不適用。性能

相關文章
相關標籤/搜索