1.
堆的意義在於最快的找到最大最小值,在堆中插入乙個值,取走最大值或最小值重新構建堆結構,其時間複雜度為o(log n) ,
而其它方法至少為
o(n)。
堆在實際中用途不在於排序,堆的應用:
a.在於排程演算法中,比如優先順序排程,每次取優先順序最高的.
b.可以採用堆構造優先順序佇列,優化dijstra
演算法。
c.對於海量資料,可以求資料的前n
大或前n小。
2.雜湊表主要是一o(1)
時間內對查詢物件定位,但是事實上,如果輸入集合不確定的情況下,可能出現大量衝突,這樣可能出現最差情況。所以雜湊表如果在輸入集合確定的情況下,選擇合適的雜湊函式和解決衝突的方法,可以在
o(1)
時間內完成。
雜湊的一些應用:
在程序的組織中,有一種為hash
組織,將程序根據
pid儲存的
hash
表中,便於查詢。 3.
二叉樹排序樹為了動態的查詢和插入,保證在o(height時間)
,這就完成了
hash
不能完成的。但是二叉樹可能出現最壞情況,使得二叉樹的深度幾乎與資料規模一致,這就會大大降低二叉排序樹的效率。 4.
平衡樹和紅黑樹為了把查詢的時間保證在o(logn)
範圍內,是對二叉排序樹的優化。
一些應用:
a.在linux
核心儲存管理中,對於程序位址空間不同的虛擬區域,核心使用平衡樹(新核心中為紅黑樹)對這些區域組織,以便快速定位某個區域。
b.在linux
核心的排程演算法中,
cfs排程演算法以程序的
vruntime(
虛擬執行時間
)為權值構造紅黑樹,以快速找到
vruntime
最小的程序。
幾種常見的查詢演算法之比較
一 順序查詢 條件 無序或有序佇列。原理 按順序比較每個元素,直到找到關鍵字為止。時間複雜度 o n 二 二分查詢 折半查詢 條件 有序陣列 原理 查詢過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中...
幾種常見的演算法比較
排序演算法總結 時間複雜度 平方階o n2 的排序 各類簡單排序 直接插入 直接選擇 氣泡排序 線性對數o nlg2n 排序 快速排序 堆排序和歸併排序 o n1 排 序 為介於0 1之間的常數 希爾排序 線性o n 排序 基數排序 桶排序 箱排序 空間複雜度 穩定性 特別注意 1.當輸入陣列有序或...
幾種排序演算法的比較
1.分類 非線性時間比較類排序 通過比較來決定元素間的相對位置關係,由於其時間複雜度不能突破o nlogn 因此稱為非線性時間比較類排序。線性時間比較類排序 不通過比較來決定元素間的相對位置關係,它可以突破基於比較排序的時間下界,以線性時間執行,因此稱為線性時間比較類排序。2.複雜度 3.演算法相關...