插值查找算法
從折半查找中可以看出,折半查找的查找效率還是不錯的。可是為什么要折半呢?為什么不是四分之一、八分之一呢?打個比方,在牛津詞典里要查找“apple”這個單詞,會首先翻開字典的中間部分,然后繼續折半嗎?肯定不會,對于查找單詞“apple”,我們肯定是下意識的往字典的最前部分翻去,而查找單詞“zero”則相反,我們會下意識的往字典的最后部分翻去。所以在折半查找法的基礎上進行改造就出現了插值查找法,也叫做按比例查找。所以插值查找與折半查找唯一不同的是在于mid的計算方式上,它的計算方式為:
mid = low + (high - low) * (searchValue - data[low]) / (data[high] - data[low])
插值查找的時間復雜度也是O(log2n),但是對于數據集合較長,且關鍵字分布比較均勻的數據集合來說,插值查找的算法性能比折半查找要好,其它的則不適用。

浙公網安備 33010602011771號