大きさの順に 並べ替えてみよう - waseda university2017/10/21 1 大きさの順に...

14
2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? ⼤きさの順に並べてみよう 1 M-project ルール 2つのものの大小比較しかできない どちらが大きいかわかったら入れ替えてもよい どの2つにも大小関係がある 最初はでたらめな大きさの順に並んでいる 作業用の場所を使ってもよい 比較の回数だけが問題 できるだけ少なく 大きさの順に並べてみよう 2 M-project まず、一番大きいものを見つける 方法を考えてみよう 君の方法を考えてみよう 2つのものの比較を何回したかな? 大きさの順に並べてみよう 3 M-project 方法① 1つずつ順に比べる 大きさの順に並べてみよう 4 M-project

Upload: others

Post on 22-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

2017/10/21

1

大きさの順に並べ替えてみよう

5個なら何回の比較でできるかな?

⼤きさの順に並べてみよう 1

M-project

ルール

2つのものの大小比較しかできない どちらが大きいかわかったら入れ替えてもよい

どの2つにも大小関係がある

初はでたらめな大きさの順に並んでいる

作業用の場所を使ってもよい 比較の回数だけが問題 → できるだけ少なく

大きさの順に並べてみよう 2

M-project

まず、一番大きいものを見つける方法を考えてみよう

君の方法を考えてみよう

2つのものの比較を何回したかな?

大きさの順に並べてみよう 3

M-project

方法① 1つずつ順に比べる

大きさの順に並べてみよう 4

M-project

Page 2: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

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つに分けて・・・

Page 3: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

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 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

Page 4: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

2017/10/21

4

では、大きさの順に並べ替えるには・・・

ソーティング(ソート、 整列化)といいます

小さい方から順に ・・・ 昇順

大きい方から順に ・・・ 降順

一番大きいものを求めた方法を応用してみよう

その方法による比較回数は?

大きさの順に並べてみよう 13

M-project

方法① 選択ソート1つずつ順に比べて 大値を求める方法の応用

大きさの順に並べてみよう 14

M-project

昇順に並べ替えたいデータ

作業用の場所

⼤きさの順に並べてみよう 15

選択ソートM-project

最初は⼀番左のデータを仮に⼀番⼩さいものとする

1

⼀番⼩さい候補が⼊っていた場所

1

⼀番⼩さいものを求めたい位置

⼤きさの順に並べてみよう 16

選択ソートM-project

最初は⼀番左のデータを仮に⼀番⼩さいものとする

1

⼤きさを⽐べて、⼩さかったら⼊れ替える

1

Page 5: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

2017/10/21

5

⼤きさの順に並べてみよう 17

選択ソートM-project

⼩さかったので⼊れ替えた

1

⼤きさの順に並べてみよう 18

選択ソートM-project

2

⼩さくないので⼊れ替えない

241

⼤きさの順に並べてみよう 19

選択ソートM-project

4

⼩さいので⼊れ替える

191

⼤きさの順に並べてみよう 20

選択ソートM-project

4

⼩さくないので⼊れ替えない

191

Page 6: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

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

求めた最⼩値を の位置へ移す

Page 7: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

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

Page 8: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

2017/10/21

8

⼤きさの順に並べてみよう 29

選択ソートM-project

最⼩値があった所へ移す

73

⼤きさの順に並べてみよう 30

選択ソートM-project

すべてと⽐べて、5の位置の43が最⼩とわかった54

⼤きさの順に並べてみよう 31

選択ソートM-project

最⼩値があった所へ移す

54

⼤きさの順に並べてみよう 32

選択ソートM-project

すべてと⽐べて、5の位置の53が最⼩とわかった55

Page 9: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

2017/10/21

9

⼤きさの順に並べてみよう 33

選択ソートM-project

66

⼤きさの順に並べてみよう 34

選択ソートM-project

すべてと⽐べて、6の位置の61が最⼩とわかった66

⼤きさの順に並べてみよう 35

78 が最⼩と分かった

選択ソートM-project

77

⼤きさの順に並べてみよう 36

選択ソートM-project

データ末尾になったので終り

Page 10: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

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

Page 11: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

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

⇒ ⇒ ⇒

Page 12: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

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)

Page 13: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

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)

混ぜて並べ替えて上に送る

下から来る並べ替わったものを

比較をする

Page 14: 大きさの順に 並べ替えてみよう - Waseda University2017/10/21 1 大きさの順に 並べ替えてみよう 5個なら何回の比較でできるかな? きさの順に並べてみよう

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

これから先の内容は高校生以上です

高校生以上の人は「つづき」を見てね