mirror of
https://github.com/krahets/hello-algo.git
synced 2025-07-29 13:23:09 +08:00
deploy
This commit is contained in:
@ -4447,7 +4447,7 @@
|
||||
</details>
|
||||
<h2 id="1193">11.9.3 演算法特性<a class="headerlink" href="#1193" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li><strong>時間複雜度為 <span class="arithmatex">\(O(n + m)\)</span></strong> :涉及走訪 <code>nums</code> 和走訪 <code>counter</code> ,都使用線性時間。一般情況下 <span class="arithmatex">\(n \gg m\)</span> ,時間複雜度趨於 <span class="arithmatex">\(O(n)\)</span> 。</li>
|
||||
<li><strong>時間複雜度為 <span class="arithmatex">\(O(n + m)\)</span>、非自適應排序</strong> :涉及走訪 <code>nums</code> 和走訪 <code>counter</code> ,都使用線性時間。一般情況下 <span class="arithmatex">\(n \gg m\)</span> ,時間複雜度趨於 <span class="arithmatex">\(O(n)\)</span> 。</li>
|
||||
<li><strong>空間複雜度為 <span class="arithmatex">\(O(n + m)\)</span>、非原地排序</strong>:藉助了長度分別為 <span class="arithmatex">\(n\)</span> 和 <span class="arithmatex">\(m\)</span> 的陣列 <code>res</code> 和 <code>counter</code> 。</li>
|
||||
<li><strong>穩定排序</strong>:由於向 <code>res</code> 中填充元素的順序是“從右向左”的,因此倒序走訪 <code>nums</code> 可以避免改變相等元素之間的相對位置,從而實現穩定排序。實際上,正序走訪 <code>nums</code> 也可以得到正確的排序結果,但結果是非穩定的。</li>
|
||||
</ul>
|
||||
|
@ -4323,7 +4323,7 @@ x_k = \lfloor\frac{x}{d^{k-1}}\rfloor \bmod d
|
||||
<h2 id="11102">11.10.2 演算法特性<a class="headerlink" href="#11102" title="Permanent link">¶</a></h2>
|
||||
<p>相較於計數排序,基數排序適用於數值範圍較大的情況,<strong>但前提是資料必須可以表示為固定位數的格式,且位數不能過大</strong>。例如,浮點數不適合使用基數排序,因為其位數 <span class="arithmatex">\(k\)</span> 過大,可能導致時間複雜度 <span class="arithmatex">\(O(nk) \gg O(n^2)\)</span> 。</p>
|
||||
<ul>
|
||||
<li><strong>時間複雜度為 <span class="arithmatex">\(O(nk)\)</span></strong>:設資料量為 <span class="arithmatex">\(n\)</span>、資料為 <span class="arithmatex">\(d\)</span> 進位制、最大位數為 <span class="arithmatex">\(k\)</span> ,則對某一位執行計數排序使用 <span class="arithmatex">\(O(n + d)\)</span> 時間,排序所有 <span class="arithmatex">\(k\)</span> 位使用 <span class="arithmatex">\(O((n + d)k)\)</span> 時間。通常情況下,<span class="arithmatex">\(d\)</span> 和 <span class="arithmatex">\(k\)</span> 都相對較小,時間複雜度趨向 <span class="arithmatex">\(O(n)\)</span> 。</li>
|
||||
<li><strong>時間複雜度為 <span class="arithmatex">\(O(nk)\)</span>、非自適應排序</strong>:設資料量為 <span class="arithmatex">\(n\)</span>、資料為 <span class="arithmatex">\(d\)</span> 進位制、最大位數為 <span class="arithmatex">\(k\)</span> ,則對某一位執行計數排序使用 <span class="arithmatex">\(O(n + d)\)</span> 時間,排序所有 <span class="arithmatex">\(k\)</span> 位使用 <span class="arithmatex">\(O((n + d)k)\)</span> 時間。通常情況下,<span class="arithmatex">\(d\)</span> 和 <span class="arithmatex">\(k\)</span> 都相對較小,時間複雜度趨向 <span class="arithmatex">\(O(n)\)</span> 。</li>
|
||||
<li><strong>空間複雜度為 <span class="arithmatex">\(O(n + d)\)</span>、非原地排序</strong>:與計數排序相同,基數排序需要藉助長度為 <span class="arithmatex">\(n\)</span> 和 <span class="arithmatex">\(d\)</span> 的陣列 <code>res</code> 和 <code>counter</code> 。</li>
|
||||
<li><strong>穩定排序</strong>:當計數排序穩定時,基數排序也穩定;當計數排序不穩定時,基數排序無法保證得到正確的排序結果。</li>
|
||||
</ul>
|
||||
|
Reference in New Issue
Block a user