五種查詢演算法總結
一、順序查詢
條件:無序或有序佇列。
原理:按順序比較每個元素,直到找到關鍵字為止。 時間複雜度:o(n)
二、二分查詢(折半查詢)
條件:有序陣列
原理:查詢過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束; 如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。
如果在某一步驟陣列為空,則代表找不到。 這種搜尋演算法每一次比較都使搜尋範圍縮小一半。 時間複雜度:o(logn)
三、二叉排序樹查詢
條件:先建立二叉排序樹:
1. 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 2. 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 3. 它的左、右子樹也分別為二叉排序樹。 原理:
在二叉查詢樹b中查詢x的過程為: 1. 若b是空樹,則搜尋失敗,否則:
2. 若x等於b的根節點的資料域之值,則查詢成功;否則: 3. 若x小於b的根節點的資料域之值,則搜尋左子樹;否則:
4. 查詢右子樹。
時間複雜度: o(log2(n))
四、雜湊表法(雜湊表)
條件:先建立雜湊表(雜湊表)
原理:根據鍵值方式(key value)進行查詢,通過雜湊函式,定位資料元素。 時間複雜度:幾乎是o(1),取決於產生衝突的多少。
五、分塊查詢
原理:將n個資料元素"按塊有序"劃分為m塊(m ≤ n)。
每一塊中的結點不必有序,但塊與塊之間必須"按塊有序";即第1塊中任一元素的關鍵字都必須小於第2塊中任一元素的關鍵字;
而第2塊中任一元素又都必須小於第3塊中的任一元素,……。 然後使用二分查詢及順序查詢。
五大查詢演算法總結
一 順序查詢演算法 1.演算法描述 順序比較即可。2.平均查詢長度 n 1 2,其中n為表長。3.演算法實現 省略4.優化思想 根據經驗,目前被查到越多的元素,將來可能被查到的可能性也越大。所以可以考慮,每次查詢到乙個元素後,將它和直接前驅交換位置。如果上述的經驗從概率上來講是成立的,則可以加快順序...
查詢演算法總結
順序查詢演算法 1.演算法描述 順序比較即可。2.平均查詢長度 n 1 2,其中n為表長。3.演算法實現 省略4.優化思想 根據經驗,目前被查到越多的元素,將來可能被查到的可能性也越大。所以可以考慮,每次查詢到乙個元素後,將它和直接前驅交換位置。如果上述的經驗從概率上來講是成立的,則可以加快順序查詢...
查詢演算法總結
順序查詢演算法 1.演算法描述 順序比較即可。2.平均查詢長度 n 1 2,其中n為表長。3.演算法實現 省略4.優化思想 根據經驗,目前被查到越多的元素,將來可能被查到的可能性也越大。所以可以考慮,每次查詢到乙個元素後,將它和直接前驅交換位置。如果上述的經驗從概率上來講是成立的,則可以加快順序查詢...