日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

减治法在查找算法中的应用(JAVA)--折半查找

發布時間:2025/3/15 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 减治法在查找算法中的应用(JAVA)--折半查找 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

減治法在查找算法中的應用

折半查找:(時間復雜度O(log以2為底n的對數))

對于有序數組的查找來說,折半查找是一種非常高效的算法,其基本原理為:比較查找鍵k和數組中間元素a[m],如果相等,算法結束;如果k<a[m],對數組前半部分執行操作;如果k>a[m],對數組后半部分執行操作。

?

public class Main {static int k = 89;static int[] a = {17, 29, 34, 45, 68, 89, 90};public static void main(String[] args) {int l = 0;int r = a.length-1;System.out.println(f(l, r));}private static int f(int l, int r) {while (l <= r) {int m = (l+r)/2;if (k == a[m]) {return m;} else if (k < a[m]) {return f(l, m-1);} else {return f(m+1, r);}}return -1;} }

發現問題:對于依賴鍵值操作的查找算法來說,折半查找已經是最優的查找算法了,但是還是有些算法具有更優良的平均效率

解決思路:插值查找,散列查找(散列法甚至不需要輸入數組是有序的)

插值查找:不同于折半查找總是把查找值和給定有序數組的中間元素比較(將問題規模削減一半),差值查找更像是在字典中查字的形式,如果我們找“班”這個字,那么我們一定先找“B”字母的區域,我們不會去從字典中間區域開始。準確來說,插值查找同樣采用比較的方式,但是它考慮了查找鍵的值。

實際上對于較小數據的查找,折半會更好;而對于大數據量而言,插值查找則更值得考慮。

總結

以上是生活随笔為你收集整理的减治法在查找算法中的应用(JAVA)--折半查找的全部內容,希望文章能夠幫你解決所遇到的問題。

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