This commit is contained in:
krahets
2026-08-18 03:09:26 +08:00
parent 0375f25b66
commit fde23f369e
158 changed files with 312 additions and 282 deletions
@@ -4674,7 +4674,7 @@
<!-- Page content -->
<h1 id="118">11.8 &nbsp; 桶排序<a class="headerlink" href="#118" title="Permanent link">&para;</a></h1>
<p>前述幾種排序演算法都屬於“基於比較的排序演算法”,它們透過比較元素間的大小來實現排序。此類排序演算法的時間複雜度無法超越 <span class="arithmatex">\(O(n \log n)\)</span> 。接下來,我們將探討幾種“非比較排序演算法”,它們的時間複雜度可以達到線性階。</p>
<p>前述幾種排序演算法都屬於“基於比較的排序演算法”,它們透過比較元素間的大小來實現排序。此類排序演算法在最壞情況下的時間複雜度下界為 <span class="arithmatex">\(\Omega(n \log n)\)</span> 。接下來,我們將探討幾種“非比較排序演算法”,它們的時間複雜度可以達到線性階。</p>
<p><u>桶排序(bucket sort</u>是分治策略的一個典型應用。它透過設定一些具有大小順序的桶,每個桶對應一個數據範圍,將資料平均分配到各個桶中;然後,在每個桶內部分別執行排序;最終按照桶的順序將所有資料合併。</p>
<h2 id="1181">11.8.1 &nbsp; 演算法流程<a class="headerlink" href="#1181" title="Permanent link">&para;</a></h2>
<p>考慮一個長度為 <span class="arithmatex">\(n\)</span> 的陣列,其元素是範圍 <span class="arithmatex">\([0, 1)\)</span> 內的浮點數。桶排序的流程如圖 11-13 所示。</p>