第八章 線性時間排序

2021-10-05 15:58:42 字數 736 閱讀 9755

輸入: 0~k. 時間複雜度o(k+n).

當k = o(n), 排序時間為θ(n).

不是比較排序, 所以脫離了ω(nlgn), 它根據輸入元素的值確定在陣列中的位置.

對於n個d位數, 每一位有k個取值, 從低位到高位依次穩定排序(θ(n+k)), 那麼時間複雜度為θ(d(n+k)).

對於n個d位數, r≤d, 可以在θ((d/r)(n+2r))時間內排序. (相當於轉換成了n個d/r位數, 每一位有2r種取值)

r取何值可以最小化時間代價?

b<⌊lgn⌋, 則(n+2r)=θ(n), 取r=b時漸近最優, 為(b/b)(n+2b) = θ(n).

b≥⌈lgn⌉, 取r=⌊lgn⌋, 則θ(bn/lgn). 若r增大到大於⌊lgn⌋, 分子2r比分母的r增加的快, 時間代價為ω(bn/lgn); 若r減小到小於⌊lgn⌋, 則b/r增大, 而n+2r仍未θ(n).

相比於快速排序

若b=o(lgn), 通常r取lgn, 則基數排序為θ(n), 優於快排的期望時間θ(nlgn).

但常數項因子不同, 並且基數排序並非原址排序.

假設n個輸入在某一區間上均勻分布, 則將區間劃分為n個桶, 然後將每個元素依次放入其所在範圍的桶裡並通過插入排序使桶裡的元素保持有序, 最後遍歷每個桶即可得到最終結果.

最壞為θ(n2), 期望θ(n), 但只要所有桶的大小的平方和 與 n 呈線性關係, 就仍為θ(n).

第八章 線性時間排序

這章剛開始證明了基於比較的排序的演算法在最壞情況下,都需要做nlgn次比較。由此可以推出合併排序快速排序都是漸進最優的比較排序演算法。線性時間排序 1.計數排序 計數排序假設n個輸入元素中的每乙個都是介於0 k之間的整數,此處k為某個整數。當k o n 時,計數排序的執行時間為o n 計數排序的思想...

第八章 線性時間排序

比較排序 在排序的最終結果中,各元素的次序依賴於太難之間的比較。決策樹 完全二叉樹,某一特定排序演算法對所有元素的比較操作。節點中標註的是序號不是元素值。需要了解輸入陣列中最大值可能是多大。通過對輸入陣列中的元素進行計數來排序。非原地演算法,需要額外的n k個空間。排序是穩定的。最後乙個迴圈從後向前...

演算法導論 第八章 線性時間排序

def 之前所有的排序演算法中,各元素的次序依賴於它們之間的比較,我們把這類排序演算法稱為比較排序演算法。8.1.排序演算法的下界 def 決策樹是一棵二叉樹,它可以表示在給定輸入規模情況下,某一特定排序演算法對所有元素的比較操作。即將所有比較後的次序描述為一條到達葉子節點的路徑,而這個路徑唯一,葉...