日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

理论基础 —— 查找 —— 插值查找

發布時間:2025/3/17 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理论基础 —— 查找 —— 插值查找 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【概述】

以查字典為例,在英文字典中查 "apple" 時,下意識的會翻開前面的書頁,當查 "zoo" 時,下意識的翻開一定是后面的書頁,顯然,此時還絕對不是從中間開始查起,而且有一定目的地從前或從后查找。

同樣的,以取值范圍在 1~10000 間的 100 個元素從小到大均勻分布的數組中查找 5,那么自然會考慮從數組下標較小的開始查找。

可以看出,二分查找這種查找方式,并不是自適應的,因此,基于二分查找,就有了插值查找,其將查找點的選擇改進為自適應選擇,從而提高查找效率。

簡單來說,插值查找就是根據要查找的關鍵字 key 與查找表中最大最小記錄的關鍵字比較后的查找方法,其核心在于插值的計算公式。

【算法原理】

在二分查找中,查找點的計算為:,經過變換后,有:

而插值查找,將??中的??改進為了?

即將:?變換為了?

【使用情況】

從時間復雜度來說,其最壞時間復雜度也是 O(longn),但對于表長較大,而關鍵字分布又比較均勻的查找表來說,其平均性能要比二分查找好的多。

反之,若查找表中關鍵字分布非常不均勻,那么插值查找未必是很合適的選擇。

【源程序】

int insertionSearch(int a[],int key, int low, int high){int mid=low+(key-a[low])/(a[high]-a[low])*(high-low);if(a[mid]==value)return mid;else if(a[mid]>value)return insertionSearch(a,key,low,mid-1);else if(a[mid]<value)return insertionSearch(a,key,mid+1,high); }

總結

以上是生活随笔為你收集整理的理论基础 —— 查找 —— 插值查找的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。