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

第五回 (2008年10月 24日)

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

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

Martin J. Dürst

AGU

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

目次

先回のまとめ

前回からの宿題

整列の重要性

単純な整列方法

Ruby の様々な繰返し

一定数の繰返し

構文:

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

応用例:

(length-1).times do
  # bubble
end

指数を使った繰返し

構文:

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

応用例:

sum = 0
1.upto 100 do |i|
  sum += i
end

バブル整列法

(bubble sort)

改良:

選択整列法

(selection sort)

挿入整列法

(insertion sort)

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

分割統治法

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

マージソート

(merge sort)

併合

(merge)

マージソートの計算量

整列の計算量

マージソートの特長

次回のための準備