• 検索結果がありません。

ヒントスライドPPT プログラミング演習2 #prog2bkc net

N/A
N/A
Protected

Academic year: 2018

シェア "ヒントスライドPPT プログラミング演習2 #prog2bkc net"

Copied!
20
0
0

読み込み中.... (全文を見る)

全文

(1)

第9週 ソート(1)

挿入ソート、選択ソート、バブルソート

(2)

必須問題9-1:選択ソート

(データ構造とアルゴリズムを参照)

アルゴリズム

• 要素の中から最小値、 2 番目に小さい値、…と残っている

要素の中での最小値選択を反復して整列する手法

選択ソートのポイント

 最小値を探す( step1 ):その時点で整列が済ん

でいない配列要素の中から最小値を探す。

 入れ替えを行なう (step2) :最小値と、値を確定さ

せる配列要素とを入れ替える。

 整列処理の終了:上記の step1 、 step 2を繰り返

し、最後の要素の一つ手前が確定したら、整列処理

を終了する。

(3)

必須問題9-1:選択ソートの例(昇順)1/4

0 1 2 3 4

31 8 24 2 5

STEP1:対象範囲から最小値を探す 検索範囲

最小値

0 1 2 3 4

2 8 24 31

STEP2:未整列の先頭要素と交換

(4)

0 1 2 3 4

2 8 24 31 5

必須問題9-1:選択ソートの例(昇順)2/4

STEP1:対象範囲から最小値を探す 検索範囲

最小値

0 1 2 3 4

2 5 24 31 8

STEP2:未整列の先頭要素と交換

確定

(5)

0 1 2 3 4

2 5 24 31 8

必須問題9-1:選択ソートの例(昇順)3/4

STEP1:対象範囲から最小値を探す 検索範囲

最小値

0 1 2 3 4

2 5 8 31 24

STEP2:未整列の先頭要素と交換

(6)

0 1 2 3 4

2 5 8 31 24

必須問題9-1:選択ソートの例(昇順)4/4

STEP1:対象範囲から最小値を探す 検索範囲

最小値

0 1 2 3 4

2 5 8 24 31

STEP2:未整列の先頭要素と交換

確定 確定

(7)

必須問題9-2:挿入ソート

(データ構造とアルゴリズムを参照)

アルゴリズム

• 大きい順または小さい順に並んでいる数列に、ある数を順

に比較しながらその数列に挿入 し並び替えることで整列す

る手法

挿入ソートのポイント

 値を入れ替えるのではなく、挿入する:その時点で

の整列済みの配列に対象要素を挿入。

 整列処理の終了:最後の要素が確定したら、整列処

理を終了する

(8)

必須問題9-2:挿入ソートの例(昇順)1/4

0 1 2 3 4

31 8 24 2 5

STEP1:対象範囲の最後の要素を適切な場所に挿入

検索範囲

0 1 2 3 4

8 31 24 2 5

STEP2:挿入された要素より後ろの要素を移動

(9)

必須問題9-2:挿入ソートの例(昇順)2/4

0 1 2 3 4

8 31 24 2 5

STEP1:対象範囲の最後の要素を適切な場所に挿入

検索範囲

0 1 2 3 4

8 24 31 2 5

STEP2:挿入された要素より後ろの要素を移動

(10)

必須問題9-2:挿入ソートの例(昇順)3/4

0 1 2 3 4

8 24 31 2 5

STEP1:対象範囲の最後の要素を適切な場所に挿入

検索範囲

0 1 2 3 4

2 8 24 31 5

STEP2:挿入された要素より後ろの要素を移動

(11)

必須問題9-2:挿入ソートの例(昇順)4/4

0 1 2 3 4

2 8 24 31 5

STEP1:対象範囲の最後の要素を適切な場所に挿入

検索範囲

0 1 2 3 4

2 5 8 24 31

STEP2:挿入された要素より後ろの要素を移動

(12)

オプション課題9-3:バブルソート

アルゴリズム

隣どうし の要素の大小を比較して、それらを交換しながら

整列する手法

 バブルソートのポイント

• 隣どうしの配列要素を比較する:比較する要素は、配列の

先頭から順に後ろへずれて行く。

• 入れ替えを行なう:隣どうしが逆順 ( 大または小 ) になっ

ていたら、要素を交換する。

• 整列処理の終了:2番目 ( 要素番号1 ) の要素の値が確定

したら、整列処理は終了する。

(13)

オプション課題9-3:バブルソートの例1/ 3

0 1 2 3 4

31 8 24 2 5

31 24 2 5

24 31 2 5

24 2 31 5

交換

交換

交換

交換

(14)

オプション課題9-3:バブルソートの例2/ 3

0 1 2 3 4

24 2 5 31

24 2 5 31

24 5 31

5 24 31

確定

交換 交換

交換なし

(15)

オプション課題9-3:バブルソートの例3/ 3

0 1 2 3 4

5 24 31

2 5 8 24 31

確定

5 24 31

交換

交換

0 1 2 3 4

5 8 24 31

交換なし

(16)

ソートの中間状態を出力

 確認用にソートの中間状態を出力しましょう。

(参考プログラムは次ページ)

Array = [ 91 63 71 14 60 1 24 13 80 15 ] -- start selection sort --

Array = [ 1 63 71 14 60 91 24 13 80 15 ] Array = [ 1 13 71 14 60 91 24 63 80 15 ] Array = [ 1 13 14 71 60 91 24 63 80 15 ] Array = [ 1 13 14 15 60 91 24 63 80 71 ] Array = [ 1 13 14 15 24 91 60 63 80 71 ] Array = [ 1 13 14 15 24 60 91 63 80 71 ] Array = [ 1 13 14 15 24 60 63 91 80 71 ] Array = [ 1 13 14 15 24 60 63 71 80 91 ] Array = [ 1 13 14 15 24 60 63 71 80 91 ] Array = [ 1 13 14 15 24 60 63 71 80 91 ] Array = [ 1 13 14 15 24 60 63 71 80 91 ] 必須問題 9-1 のチェック用出力例

(17)

参考プログラム: 9-1,9-2,9-3 共通

#define MAX_DATA int main(){

int numbers[MAX_DATA];

/* 略:変数宣言、 numbers.dat のファイル読込み */

printArray(numbers, n);

for (        ) {

for ( ) {

}

printArray(numbers, n); ループ条件

ソート処理

ループ条件 ソート処理

ソート処理

ここの処理が必要ない ソートもあります

ここの処理が必要ない ソートもあります ソート前の配列の表示 n は読み込んだ要素数

配列のサイズを定義

(18)

参考プログラム: 9-1,9-2,9-3 共通 (printArray)

void printArray(int numbers[], int length){    int i=0;

   printf("Array = [ ");

   for (i = 0; i < length; i++) {      printf("%d ", numbers[i]);    }

   printf("]\n"); }

(19)

その他の注意

 同じアルゴリズムでも、多少実現方法に

違いがあることがある

昇順・降順

• 前から /後ろからソート済みにする

(20)

著者リスト

1. 安積 卓也(情報システム学科)

2. 大森 隆行(情報システム学科)

参照

関連したドキュメント

第7回 第8回 第9回 第10回

試用期間 1週間 1ヶ月間 1回/週 10 分間. 使用場所 通常学級

国連ユースボランティア 5カ月間 5カ月間 1学期間 約1カ月間 約1カ月間 約1週間 約2週間 約1週間 約2週間 約1週間 約3週間 約6週間 約4週間

卒論の 使用言語 選考要件. 志望者への

国際地域理解入門B 国際学入門 日本経済基礎 Japanese Economy 基礎演習A 基礎演習B 国際移民論 研究演習Ⅰ 研究演習Ⅱ 卒業論文

授業は行っていません。このため、井口担当の 3 年生の研究演習は、2022 年度春学期に 2 コマ行います。また、井口担当の 4 年生の研究演習は、 2023 年秋学期に 2

使用言語 日本語 選考要件. 登録届を提出するまでに個別面談を受けてください。留学中で直接面談 できない場合は Skype か