データ構造とアルゴリズム

第五回 (2011年11月11日)

分割統治法、マージソート

http://www.sw.it.aoyama.ac.jp/2011/DA/lecture5.html

Martin J. Dürst

AGU

© 2008-11 Martin J. Dürst 青山学院大学

目次

前回のまとめ

前回からの宿題

前回のミニテストについて

整列の重要性

単純な整列方法

Ruby の様々な繰返し

一定回数の繰返し

構文:

回数.times do
  # 何かの作業
end

応用例:

(length-1).times do
  # bubble
end

指数を使った繰返し

構文:

出発値.upto 目的値 do |指数変数|
  # 指数変数を使った作業
end

応用例:

0.upto(length-2) do |i|
  # select
end

バブル整列法

(bubble sort)

改良:

実装の例: 5sort.rb (下記の整列法も同様)

 

選択整列法

(selection sort)

挿入整列法

(insertion sort)

改良: 番兵 (sentinel) の使用: 最初の項目の前に全ての項目より小さいものを設置

分割統治法

(divide and conquer, ラテン語: divide et impera)

マージソート

(merge sort)

併合

(merge)

マージソートの計算量

整列の計算量

マージソートの特長

まとめ

次回のための準備