スライド 1

アルゴリズムとデータ構造
補足資料7-4
「単純交換ソートexsort.c」
横浜国立大学
理工学部
数物・電子情報系学科
富井尚志
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 90 85 70 86 92 63 85
未整列
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 90 85 70 86 92 63 85
比較
未整列
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 90 85 70 86 92 63 85
比較
未整列
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 90 85 70 86 92 63 85
比較
>!
未整列
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 85 90 70 86 92 63 85
比較
>!
入替!
未整列
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 85 90 70 86 92 63 85
比較
未整列
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 85 70 90 86 92 63 85
比較
未整列
>!
入替!
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 85 70 90 86 92 63 85
比較
未整列
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 85 70 86 90 92 63 85
比較
未整列
>!
入替!
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 85 70 86 90 92 63 85
未整列 比較
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 85 70 86 90 92 63 85
未整列
比較
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 85 70 86 90 63 92 85
未整列
比較
>!
入替!
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 85 70 86 90 63 92 85
未整列
比較
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 85 70 86 90 63 85 92
未整列
比較
>!
入替!
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 85 70 86 90 63 85 92
未整列
整列済み
未整列エリアの
最大要素!
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 85 70 86 90 63 85 92
未整列
整列済み
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 85 70 86 90 63 85 92
未整列
整列済み
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 70 85 86 63 85 90 92
未整列
整列済み
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 70 85 86 63 85 90 92
未整列
整列済み
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
65 70 85 63 85 86 90 92
未整列
整列済み
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
8件のデータ
63 65 70 85 85 86 90 92
整列済み
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
n件のデータ
未整列
未整列
整列済
整列済
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
n件のデータ
未整列
未整列
整列済
整列済
i個の要素から、隣同士の入れ替えで最大値を追い出すためのコスト
入れ替え対象の場所を決めるのに:i-1回の比較
入れ替え対象の値を保持するのに:0~i-1回のデータ移動
繰り返し回数: n-1回
整列済みのエリアと未整列のエリアに分けて考える。
解の方針:未整列のエリアで隣同士を比較・入れ替えながら整列済みエリアをつくる
→入れ替えると、未整列エリアの最大(最小)要素が追い出される
→泡が立ち上っていく様子に似ている
の比較
O(n2)
n件のデータ
整
列
済
未整列
未整列
整列済
…
n-1回の繰返し
未整列
整列済
…
それぞれ、およそ(n-i)/2回程度の比較
未整列
整列済
…
未整列
整列済
…
未整列
未
整
列
整列済
整列済