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
+1 -1
View File
@@ -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> の浮動小数点数であるとします。バケットソートの流れを以下の図に示します。</p>