スライド(PowerPoint2002形式)
Download
Report
Transcript スライド(PowerPoint2002形式)
-プログラミング-
佐賀商業高等学校
シンデレラを探せ!
シンデレラが忘れていった
ガラスの靴
この靴に合う足のサイズは、
線形探索で、
この
サイズの
人
探してみよう。
××
×
×
×
線形探索は、順番に探して
いく方法なので、候補者が多
くなると、探索にかなり時間
がかかる可能性がある。
○
× ×
シンデレラ候補の足
この人が
シンデレラ
シンデレラを探せ!
シンデレラが忘れていった
ガラスの靴
この靴に合う足のサイズは、
二分探索で探してみよう。
その前に、
小さい順に並べー!!
シンデレラ候補の足
シンデレラを探せ!
シンデレラが脱ぎ忘れていった
ガラスの靴
この靴に合う足のサイズは、
二分探索で探してみよう。
真ん中の人と比べると、
小さい順に並べー!!
真ん中の人が
大きいということは
×
まず、真ん中の人を探す
1.当然、真ん中の人はシンデレラではない。
2.真ん中の人より大きい人たちも
シンデレラではない。
一気に候補者が減った!!
シンデレラを探せ!
シンデレラが脱ぎ忘れていった
ガラスの靴
この靴に合う足のサイズは、
二分探索で探してみよう。
真ん中の人と比べると、
真ん中の人が
小さいということは
××
×
残った候補者から、真ん中の人を探す
1.当然、真ん中の人はシンデレラではない。
2.真ん中の人より小さい人たちも
シンデレラではない。
シンデレラを探せ!
シンデレラが脱ぎ忘れていった
ガラスの靴
この靴に合う足のサイズは、
二分探索で探してみよう。
真ん中の人と比べると、
この人が
シンデレラ
××
×
残った候補者から、真ん中の人を探す
二分探索は、候補者を半分
ずつ一気に減らすことができ
るので、高速な探索ができる。
ただし、並べ替えが行われて
いるのことが前提。
二分探索
入出力例
(例題)商品コードを入力し、そのコードに対応する商品名を出力する
プログラムを作成せよ。
<処理条件>
1.商品コードを画面より入力し、ICOに保存する。
025
055
030
エラー
999(終了)
2.商品コードはテーブルCODEに、商品名はテーブルMEIに
あらかじめ記憶されている。
3.テーブルは商品コードの昇順に並んでいる。
4.999が入力されたときに処理を終了する。
5.テーブルにない商品コードが入力された場合は画面に"エラー”と
表示する。
MEI
テレビ
ビデオ
カメラ
エアコン
パソコン
クリーナー
プリンタ
レンジ
PSX
カツドン
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
010
015
025
040
050
055
070
100
11
125
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
CODE
(9)
(10)
カメラ
クリーナー
二分探索
はじめ
(例題)商品コードを入力し、そのコードに対応する商品名を出力する
プログラムを作成せよ。
ICO
<処理条件>
ループ1
1.商品コードを画面より入力し、ICOに保存する。
ICO = 999
2.商品コードはテーブルCODEに、商品名はテーブルMEIに
あらかじめ記憶されている。
0 → SW
3.テーブルは商品コードの昇順に並んでいる。
4.999が入力されたときに処理を終了する。
下限の初期
値はいつも0
5.テーブルにない商品コードが入力された場合は画面に"エラー”と
表示する。
上限の初期値は
印字
テーブルの数+1
ビデオ
カメラ
エアコン
パソコン
クリーナー
プリンタ
レンジ
PSX
カツドン
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
SW = 1
NO
MEI(TYU)
YES
NO
11 → JO
TYU→KA
1 → SW
YES
NO
“エラー”
の場合
<
CODE
下限と上限を足
して2で割り、
真ん中を指定
ICO=CODE(TYU) YES
ICO
025
10
(KA+JO)/2
→TYU
TYU→JO
MEI
テレビ
ループ2
ICO>CODE(TYU)
0 → KA
SWは探索
が終わったこ
SWとを知らせる
役割
1 → SW
010
015
025
040
050
055
070
100
110
125
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
↑
↑
↑
KA
TYU
JO
ループ2
ICO
候補
ループ1
候補
KAの右隣からJOの左隣までが候補
おわり
↑
JO
↑
↑
KA TYU
二分探索
はじめ
(例題)商品コードを入力し、そのコードに対応する商品名を出力する
プログラムを作成せよ。
ループ2
SW
SW = 1
10
ICO
<処理条件>
ループ1
1.商品コードを画面より入力し、ICOに保存する。
ICO = 999
2.商品コードはテーブルCODEに、商品名はテーブルMEIにあ
らかじめ記憶されている。
(KA+JO)/2
→TYU
ICO=CODE(TYU)
NO
0 → SW
3.テーブルは商品コードの昇順に並んでいる。
4.999が入力されたときに処理を終了する。
ICO>CODE(TYU)
5.テーブルにない商品コードが入力された場合は画面に"エラー”と
表示する。
TYU→JO
テレビ
ビデオ
カメラ
エアコン
パソコン
クリーナー
プリンタ
レンジ
PSX
カツドン
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
ICO
030
エラー
例
の場合
<
CODE
010
015
025
040
050
055
070
100
110
125
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
11 → JO
JO = KA+1
NO
KAとJOが隣合う
という意味。
候補が無くなるので、
該当コードは存在し
なかった。
↑
↑
↑
KA
TYU
JO
TYU→KA
YES
“エラー”
1 → SW
ループ2
ICO
候補が
無くなった!!
YES
NO
0 → KA
MEI
YES
ループ1
おわり
MEI(TYU)
1 → SW
二分探索
はじめ
(例題)商品コードを入力し、そのコードに対応する商品名を出力する
プログラムを作成せよ。
ICO
<処理条件>
SW
ループ2
SW = 1
1.商品コードを画面より入力し、ICOに保存する。
2.商品コードはテーブルCODEに、商品名はテーブルMEIに
あらかじめ記憶されている。
ループ1
ICO = 999
3.テーブルは商品コードの昇順に並んでいる。
4.999が入力されたときに処理を終了する。
0 → SW
5.テーブルにない商品コードが入力された場合は画面に"エラー”と
表示する。
ICO=CODE( )
NO
ICO>CODE( )
MEI
YES
YES
NO
テレビ
ビデオ
カメラ
エアコン
パソコン
クリーナー
プリンタ
レンジ
PSX
カツドン
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
1 → SW
ICO
YES
の場合
CODE
NO
010
015
(1)
(2)
02
5
04
0
05
0
05
5
07
0
(3)
(4)
(5)
(6)
(7)
100
110
125
(8)
(9)
(10)
“エラー”
1 → SW
ループ2
ICO
の場合
CODE
ICO
010
015
(1)
(2)
02
5
04
0
05
0
05
5
07
0
(3)
(4)
(5)
(6)
(7)
100
110
125
(8)
(9)
(10)
ループ1
おわり
↑
JO
↑
KA
↑
TYU