View
0
Download
0
Category
Preview:
Citation preview
2017/10/21
1
大きさの順に並べ替えてみよう
5個なら何回の比較でできるかな?
⼤きさの順に並べてみよう 1
M-project
ルール
2つのものの大小比較しかできない どちらが大きいかわかったら入れ替えてもよい
どの2つにも大小関係がある
初はでたらめな大きさの順に並んでいる
作業用の場所を使ってもよい 比較の回数だけが問題 → できるだけ少なく
大きさの順に並べてみよう 2
M-project
まず、一番大きいものを見つける方法を考えてみよう
君の方法を考えてみよう
2つのものの比較を何回したかな?
大きさの順に並べてみよう 3
M-project
方法① 1つずつ順に比べる
大きさの順に並べてみよう 4
M-project
2017/10/21
2
1つずつ順に比べる
大きさの順に並べてみよう 5
M-project
比較回数は5-1=4回
方法② トーナメント法
大きさの順に並べてみよう 6
M-project
トーナメント法
大きさの順に並べてみよう 7
M-project
比較回数は5-1=4回
大きい方を下へ
方法③ 同じやり方を繰り返す
大きさの順に並べてみよう 8
M-project
・・・
・・・・・・
・・・
2つに分けて、2つに分けて・・・
2017/10/21
3
まず、1個になるまで2つに分けて2つに分けて・・・
大きさの順に並べてみよう 9
M-project
3 5 2 1 4
3 5 2 1 4
3 5 2 1 4
2 1
1個ずつになれば、隣り合う2つを比較できる
次に、比較した結果を下から上にあげていく
大きさの順に並べてみよう 10
M-project
5
5 4
3 5 2 4
2 1
隣り合う2つを比較する
ここに
一番大きいものが求まる
max{ 1} = 1max{ 1, 2, … , } = max{ 1, max{ 2, … , }}
比較回数 1 = 0, = 1 1 ⇒ =
max{ 1} = 1max{ 1, 2, … , } = max{ max{ 1, … , /2}, max{ /2 1, … , } }
比較回数 1 = 0, = 2 /2 1 ⇒ =
2つに分ける分け方もいろいろ
大きさの順に並べてみよう 11
M-project
1対 -1
/2 対 /2
君が考えた方法はあったかな?
君の方法が説明した方法以外のオリジナルだったなら、
それは素晴らしい!
でも、どういう方法でやっても比較回数は n-1回は必要
(5個のときは4回の比較が必要)
なぜかな?
大きさの順に並べてみよう 12
M-project
2017/10/21
4
では、大きさの順に並べ替えるには・・・
ソーティング(ソート、 整列化)といいます
小さい方から順に ・・・ 昇順
大きい方から順に ・・・ 降順
一番大きいものを求めた方法を応用してみよう
その方法による比較回数は?
大きさの順に並べてみよう 13
M-project
方法① 選択ソート1つずつ順に比べて 大値を求める方法の応用
大きさの順に並べてみよう 14
M-project
昇順に並べ替えたいデータ
作業用の場所
⼤きさの順に並べてみよう 15
選択ソートM-project
最初は⼀番左のデータを仮に⼀番⼩さいものとする
1
⼀番⼩さい候補が⼊っていた場所
1
⼀番⼩さいものを求めたい位置
⼤きさの順に並べてみよう 16
選択ソートM-project
最初は⼀番左のデータを仮に⼀番⼩さいものとする
1
⼤きさを⽐べて、⼩さかったら⼊れ替える
1
2017/10/21
5
⼤きさの順に並べてみよう 17
選択ソートM-project
2
⼩さかったので⼊れ替えた
1
⼤きさの順に並べてみよう 18
選択ソートM-project
2
⼩さくないので⼊れ替えない
241
⼤きさの順に並べてみよう 19
選択ソートM-project
4
⼩さいので⼊れ替える
191
⼤きさの順に並べてみよう 20
選択ソートM-project
4
⼩さくないので⼊れ替えない
191
2017/10/21
6
⼤きさの順に並べてみよう 21
選択ソートM-project
4
⼩さくないので⼊れ替えない
191
⼤きさの順に並べてみよう 22
選択ソートM-project
4
⼩さくないので⼊れ替えない
191
⼤きさの順に並べてみよう 23
選択ソートM-project
4 4の位置にある19が最⼩とわかった!191
⼤きさの順に並べてみよう 24
選択ソートM-project
最⼩値があった所へ移す( の位置のデータを の位置へ移す)
41
求めた最⼩値を の位置へ移す
2017/10/21
7
⼤きさの順に並べてみよう 25
選択ソートM-project
2
未チェックの⼀番左のデータを次に仮に⼀番⼩さいものとする
⼀番⼩さい候補が⼊っていた場所
2
⼀番⼩さいものを求めたい位置
⼤きさの順に並べてみよう 26
選択ソートM-project
2 すべてと⽐べて、2の位置の24が最⼩とわかる
2
⼤きさの順に並べてみよう 27
選択ソートM-project
33
⼀番⼩さいものを求めたい位置
⼀番⼩さい候補のあった場所を⼊れる
⼤きさの順に並べてみよう 28
選択ソートM-project
7 すべてと⽐べて、7の位置の36が最⼩とわかる
363
2017/10/21
8
⼤きさの順に並べてみよう 29
選択ソートM-project
最⼩値があった所へ移す
73
⼤きさの順に並べてみよう 30
選択ソートM-project
すべてと⽐べて、5の位置の43が最⼩とわかった54
⼤きさの順に並べてみよう 31
選択ソートM-project
最⼩値があった所へ移す
54
⼤きさの順に並べてみよう 32
選択ソートM-project
すべてと⽐べて、5の位置の53が最⼩とわかった55
2017/10/21
9
⼤きさの順に並べてみよう 33
選択ソートM-project
66
⼤きさの順に並べてみよう 34
選択ソートM-project
すべてと⽐べて、6の位置の61が最⼩とわかった66
⼤きさの順に並べてみよう 35
78 が最⼩と分かった
選択ソートM-project
77
⼤きさの順に並べてみよう 36
選択ソートM-project
データ末尾になったので終り
2017/10/21
10
選択ソート 比較回数は?
大きさの順に並べてみよう 37
M-project
5個のとき・・・
1回目 4回の比較2回目 3回の比較2回目 2回の比較2回目 1回の比較合計 4+3+2+1=10回の比較
選択ソート 比較回数は?一般には(高校生以上)
大きさの順に並べてみよう 38
M-project
初 1回の比較 2回目 2回の比較 ・・・ 1回目 1回の比較
合計 回の比較が必ず必要
比較回数もっと少ない方法があるか?
大値を求めたときの「トーナメント法」を使うと・・・
大きさの順に並べてみよう 39
M-project
トーナメント法を使った場合の比較回数
5個の場合
1回目 大値(または 小値)が4回の比較で求められる
2回目 2番目のものを3回の比較で
3回目 3番目のものを2回の比較で
4回目 4番目のものを1回の比較で
合計 4+3+2+1=10回の比較をする
選択ソートと変わらない!
大きさの順に並べてみよう 40
M-project
2017/10/21
11
方法③ 泡立ち法
1.並び替えたいものを水中に入れ、
2.下の方から、隣り合うものを比較し、
(小さい数字は比較する順)
3.泡が浮かび上がるのと同じように、
小さいものが上に行くように入れ替える
3 のとき、19と78 が入れ替わり、
4 のとき、78の所に来た19と24が入れ替わり、
5 のとき、24の所に来た19と53が入れ替わる
4.その結果、一番小さいものが一番上に来る
大きさの順に並べてみよう 41
M-project
53
24
78
19
43
611
2
3
4
5
泡立ち法の実行 1回目
大きさの順に並べてみよう 42
M-project
53
24
78
19
43
611
2
3
4
553
24
19
78
43
61
53
19
24
78
43
61
19
53
24
78
43
61
⇒ ⇒ ⇒
泡立ち法の実行 2回目
大きさの順に並べてみよう 43
M-project
19
53
24
78
43
611
2
3
4
519
53
24
43
78
61
19
53
24
43
78
61
19
24
53
43
78
61
⇒ ⇒ ⇒
泡立ち法の実行 3回目
大きさの順に並べてみよう 44
M-project
19
24
53
43
78
611
2
3
4
519
24
53
43
61
78
19
24
53
43
61
78
19
24
43
53
61
78
⇒ ⇒ ⇒
2017/10/21
12
泡立ち法の実行4回目と5回目を考えてみよう
大きさの順に並べてみよう 45
M-project
19
24
43
53
61
781
2
3
4
519
24
43
53
61
78
⇒
4回目も5回目も同じことを2回することになる
こういう無駄をなくすにはどうしたよいだろう
泡立ち法の比較回数
大きさの順に並べてみよう 46
M-project
1
2
3
4
5毎回、5回(=データの個数-1)の比較をする
これを5回繰り返すので、比較回数の総計は25回
データの個数が 個の場合は 1 回
比較回数は方法①②とほとんど変わらない!
泡立ち法の比較回数
大きさの順に並べてみよう 47
M-project
1
2
3
4
5 4回目も5回目も同じことを2回することになる
こういう無駄をなくすにはどうしたよいだろう
毎回、5回の比較をしないで、繰り返しを1回するごとに比較回数を1回ずつ減らしてもよい
なぜかわかるかな?
比較回数は何回に減るかな? ⇒ 回に減るよ!
後に、次の方法④は?
大きさの順に並べてみよう 48
M-project
比較はしない
混ぜて並べ替える(比較をする)
②下から来る並び替わった2つを
3 5 2 1 4(i) (ii)
2017/10/21
13
(i) まず、1個になるまで2つに分けて2つに分けて・・・
大きさの順に並べてみよう 49
M-project
3 5 2 1 4
3 5 2 1 4
3 5 2 1 4
2 1
1個ずつになれば、隣り合う2つを比較できる
(i)
比較はしない
(ii)次に、 を混ぜて並べ直して下から上に送る
大きさの順に並べてみよう 50
M-project
1 2 3 4 5
3 5 1 2 4
3 5 1 2 4
2 1
隣り合う2つを比較する
後にここにすべてが並べ替わっている
混ぜて並べ替えて上に送る
下から来る並べ替わったものを
(ii)
比較をする
混ぜ合わせるときの比較回数は?
大きさの順に並べてみよう 51
M-project
2 5 6 9 10 1 3 4 7 8 11
ここへ左から順に入れてゆく(結果的にソートされる)
ソートされている ソートされている
比べて小さい方を移す
比較回数は 悪でも、「合わせたデータの個数ー1」回なぜ?
この方法④の比較回数は?
大きさの順に並べてみよう 52
M-project
ここで比較を1回する
ここで比較を1回する ここで比較を2回する
ここで比較を4回する
比較回数の合計は1+1+2+4=8回⇒ 方法①②③だと10回だからそれより速い!
比較はしない
1 2 3 4 5
3 5 1 2 4
3 5 1 2 4
2 1
(i)(ii)
混ぜて並べ替えて上に送る
下から来る並べ替わったものを
比較をする
2017/10/21
14
方法④の比較回数 例
比較回数が も少ない場合
と を混ぜて
とするとき、比較は3回ですむ
比較回数が も多い場合
と を混ぜて
とするとき、比較は10回
大きさの順に並べてみよう 53
2 5 9 11 13 25 38 39 49 55
2 5 9 11 13 25 38 39 49 55
2 9 13 25 38 55 5 11 39 49 60
2 5 9 11 13 25 38 39 49 55 60
3個 7個
6個 5個
方法④の比較回数 一般の場合
比較回数が も少ない場合
のどれも より小さく、
≦ のときには 比較は 回 ですむ
比較回数が も多い場合
のように、いつも残ったものの左端の一方が 小のとき、比較は 回
大きさの順に並べてみよう 54
2 5 9 11 13 25 38 39 49 55
2 9 13 25 38 55 5 11 39 49 60
個 個
個 個
これ
これとこれ
大きさの順に並べてみよう 55
M-project
3個の場合 2回4個の場合 5回
→ 5回で並べる方法を考えよう5個の場合 7回
→ 7回で並べる方法を考えるのはむずかしいかも
個の場合 「2 ≧ !を満たす 」回
結局、比較は何回必要なんだろう?
大きさの順に並べてみよう 56
M-project
これから先の内容は高校生以上です
高校生以上の人は「つづき」を見てね
Recommended