• 検索結果がありません。

アルゴリズム論 (第3回)

N/A
N/A
Protected

Academic year: 2021

シェア "アルゴリズム論 (第3回)"

Copied!
17
0
0

読み込み中.... (全文を見る)

全文

(1)

アルゴリズム論

(第3回)

佐々木研(情報システム構築学講座)

講師 山田敬三

[email protected]

(2)

バケットソート

(3)

バケットソート

入力列を 𝑘𝑘𝑘𝑘𝑘𝑘 𝑎𝑎𝑖𝑖 の昇順に整列した列を返す.

(4)

バケットソートのアルゴリズム

0 ≤ 𝑥𝑥 ≤ 9 について,𝑃𝑃𝑥𝑥 を用意する.

for 𝑖𝑖 1 to 𝑛𝑛 do 𝑘𝑘 𝑘𝑘𝑘𝑘𝑘𝑘 𝑎𝑎𝑖𝑖

𝑎𝑎𝑖𝑖 𝑃𝑃𝑦𝑦 の末尾に追加する.

end

𝑃𝑃0 から 𝑃𝑃9 までを連接し,出力する.

(5)

実行例 ( 𝑘𝑘𝑘𝑘𝑘𝑘 𝑎𝑎

𝑖𝑖

は一の桁)

入力列: 125,900,123,800,143,700,600,501 𝑃𝑃0

𝑃𝑃1 𝑃𝑃3 𝑃𝑃5

出力列: 900,800,700,600,501,123,143,125 900,800,700,600

501

123,143 125

(6)

基数ソート

(7)

基数ソート

キーが整数のときに利用できる.

キーの最大桁数を 𝑘𝑘 とする.(最大値が1234のとき,𝑘𝑘 = 4

(8)

基数ソートのアルゴリズム

for 𝑗𝑗 1 to 𝑘𝑘 do

列を下位から第 𝑗𝑗 桁目に関して整列する.

ただし,第 𝑗𝑗 桁目の値が同じ要素については,

それらの順番が整列の前後で変わらないようにする.

end

安定した整列アルゴリズム

(9)

実行例

入力列: 125,900,123,800,143,700,600,501 一の桁: 900,800,700,600,501,123,143,125 十の桁: 900,800,700,600,501,123,125,143 百の桁: 123,125,143,501,600,700,800,900

(10)

クイックソート法

(11)

クイックソート法

考え方

与えられた問題を,繰り返しより小さな問題に分割して,

その小問題を解く(分割統治法)

例)解答用紙を整列する:まず十の位でソートして、でき た各束を一の位でソートする.

(12)

クイックソート法

1. iを先頭要素番号、jを末尾要素番号とする 2. pivotを配列の任意の要素から設定

3. i>jとなるまで4.~6.を繰り返す

12 7 9

6 15 23 2 10 4 20

pivot

i j

(13)

クイックソート法

4. iを増加させ、a[i]≧pivotが見つかるま で走査

5. jを減少させ、a[j]≦pivotが見つかるま で走査

6. i≦jならばa[i]とa[j]を交換し、iを1増 加、jを1減少させて3.へ

i j

12 7 9

6 15 23 2 10 4 20

i 6

i 9

i 12

i 7

j 20 i

15

j 4 j 15 i

4 15

4

i 23

j 10 i

10

j 23

10 23

i,j 2 j 2

i 23

(14)

クイックソート法

分割された各部分に対して再び1.~6.の 手順を繰り返す

分割した結果、対象となる要素数が1となっ たら終了

12 7 9

6 4 10 2 23 15 20

12

7 9

6 2 4 10 15 23 20

12

7 9

6 2 4 10 15 23 20

(15)

クイックソート法の計算量

平均

最大

(16)

ソート法まとめ

比較に よる

時間 計算量

空間

計算量 安定性 単純選択ソート 𝑂𝑂 𝑁𝑁2 𝑂𝑂 1 単純挿入ソート 𝑂𝑂 𝑁𝑁2 𝑂𝑂 1 バブルソート 𝑂𝑂 𝑁𝑁2 𝑂𝑂 1 クイックソート 𝑂𝑂 𝑁𝑁log 𝑁𝑁 𝑂𝑂 log 𝑁𝑁 バケットソート 𝑂𝑂 𝑁𝑁 𝑂𝑂 𝑁𝑁

(17)

問題

次の配列を単純選択法,単純挿入法,バブルソート,クイックソート

(最初の分割のみ,pivotは任意)で,それぞれ整列しなさい.

8,4,6,5,1,7,2

次の配列を基数ソートを用いて,整列しなさい.

851,367,783,478,143,117,127,509

参照

関連したドキュメント

不適合 (第二)地下水基準不適合として調製 省略 第二地下水基準不適合として調製 不適合.

第7回 第8回 第9回 第10回

第6回赤潮( Skeletonema costatum 、 Mesodinium rubrum 第7回赤潮( Cryptomonadaceae ) 第7回赤潮(Cryptomonadaceae). 第8回赤潮( Thalassiosira

Dual I/O リードコマンドは、SI/SIO0、SO/SIO1 のピン機能が入出力に切り替わり、アドレス入力 とデータ出力の両方を x2

震災発生時のがれき処理に関

受入都道府県 搬出側 相手方 種類 数量(万トン) 備考 茨城県 石巻ブロック 民間事業者 可燃物等 調整中. 東京都 石巻ブロック 民間事業者 混合廃棄物

シュラウド 補修工事終了 再循環系配管 補修工事予定 シュラウド 補修工事終了 再循環系配管 補修工事中. シュラウド

協力: 株式会社 ワコールアートセンター/日本映像翻訳アカデミー(R):English Clock/有限会社