二分查詢及插值查詢

2021-07-06 10:21:27 字數 438 閱讀 8977

二分查詢和插值查詢都是基於減而治之的原理

1)細節:二分查詢的範圍的下標:lo和hi代表[lo,hi),因此,選擇mid的時候,兩部分是[lo,mid),和[mid+1,hi);

插值查詢的含義類似於在字典中確定乙個字母的範圍,比如選擇b的話,會在較前的頁碼處查詢,這裡,字母相當於陣列的下標, 而頁碼相當於要查詢的元素;

2)效率:查詢對數值的規模進行折半,因此二分查詢的時間複雜度為logn,或者說是共有n個十進位制位的的數

插值查詢在每次查詢後,數的規模變為根號n, 可以看作是有logn位的二進位制數,每次規模減小為根號n,則每次二進位制位減小為0.5logn,則時間複雜度為loglogn

3)關係:二者的思想其實是一致的,只不過是作為查詢軸點的選擇方法不同;

插值查詢需要資料的分布在一定範圍內均勻,否則容易較小資料受到擾動;

插值查詢更適合於大規模的查詢。

二分查詢與插值查詢

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。1 確定排序好的陣列的中間位置mid left right 2 left 0,right n 1 將陣列分為兩部分。2 用要t mid ...

查詢演算法之二分查詢 插值查詢

對半查詢和斐波那契查詢對於元素關鍵字的整體分布沒有要求,可以均勻分布,也可以不均勻分布。對於關鍵字分布不均勻且沒有規律的情況,確實很難找到更好的方法提高演算法的查詢效率 但是如果查詢序列的關鍵字分布均與,那麼是可以利用這種均勻性來提高演算法效率的,例如使用插值查詢。在關鍵字值分布均勻的情況下,使用插...

二分查詢之高階(插值查詢)

1.二分查詢即是折半查詢,即把資料分成2份進行比較判斷。前提是有序列表 二分查詢 function bsearch list,item else if guess item else return null 2.如果要查詢的數十分接近於low端或者height端,那麼用四分查詢會比二分查詢更快 如何...