五大經典查詢演算法
線性查詢,通過**遍歷,乙個乙個比較
核心演算法
//順序查詢
public static int orderlookup(int list, int key)
}return -1;
}
折半查詢(只能用於有順序的陣列)
將需要查詢的數與陣列的中值進行比較,若小於,right指標左移,大於則右移,每次排除一半的數。
//折半查詢-----適用於有順序的查詢
public static int halvelookup(int list, int key)
//值在前半段
else if (key < list[middle]) else
}return -1;
}
雜湊查詢—建立hash函式,通過自己的規則將數存入陣列位址裡面,當需要查詢該數的時候,計算出該數在陣列位址的位置,直接查詢,這裡需要注意的是處理hash衝突(當該位址已經被使用,尋找附近沒被使用的位址進行儲存)
//雜湊查詢,通過hash演算法,在hash表裡面進行查詢
//測試hash查詢
public static void testhash(int list,int length,int key){
//插入hash表
for (int i=0;i
五大查詢演算法總結
一 順序查詢演算法 1.演算法描述 順序比較即可。2.平均查詢長度 n 1 2,其中n為表長。3.演算法實現 省略4.優化思想 根據經驗,目前被查到越多的元素,將來可能被查到的可能性也越大。所以可以考慮,每次查詢到乙個元素後,將它和直接前驅交換位置。如果上述的經驗從概率上來講是成立的,則可以加快順序...
演算法 五大演算法之貪心法
貪心法 greedy algorithm 又稱貪心演算法,是一種在每一步選擇中都採取在當前狀態下最好或最優 即最有利 的選擇,從而希望導致結果是最好或最優的演算法。1.基本概念 貪心演算法與動態規劃的不同在於它每對每個子問題的解決方案都做出選擇,不能回退。動態規劃則會儲存以前的運算結果,並根據以前的...
五大演算法之貪心演算法
貪心演算法是指對子問題取最值,從而求得區域性最優解,並以此求得全域性最優解。貪心演算法可以認為是動態規劃的乙個特例,同樣是需要將問題分解為子問題,避免了子問題的重複計算,只不過在子問題的處理上貪心演算法更加簡單直接。貪心演算法不是對所有問題都能得到整體最優解,選擇的貪心策略必須具備無後效性,即某個狀...