データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム

Slides:



Advertisements
Similar presentations
プログラミング 平成25年10月29日 森田 彦.
Advertisements

データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
アルゴリズムとデータ構造 2012年6月27日
プログラミング 平成25年12月3日 森田 彦.
第12回 ソート(3): シェルソート、クイックソート
プログラミング 平成25年11月19日 森田 彦.
第10回 整列 ~ バブルソート,挿入ソート,選択ソート~
第11回 整列 ~ シェルソート,クイックソート ~
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
データ構造とアルゴリズム論 第5章 レコード構造を使った処理-クラスの利用
プログラミング 平成24年10月23日 森田 彦.
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
第10回 ソート(1):単純なソートアルゴリズム
データ構造とアルゴリズム論 第9章 木構造 平成16年12月21日 森田 彦.
アルゴリズムとデータ構造 補足資料7-3 「単純選択ソートselsort.c」
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
CGプログラミング論 平成28年4月27日 森田 彦.
データ構造とアルゴリズム論 第2章 配列(構造)を使った処理
プログラミング 平成25年12月10日 森田 彦.
ネットワークプログラミング論 平成28年12月12日 森田 彦.
プログラミング 平成24年10月30日 森田 彦.
プログラミング 平成23年10月5日 森田 彦.
データ構造とアルゴリズム論 第7章 探索のアルゴリズム
第11回 整列 ~ シェルソート,クイックソート ~
データ構造とアルゴリズム論 第9章 木構造 平成17年12月20日 森田 彦.
データ構造とアルゴリズム論 第2回目テスト 平成15年12月9日 森田 彦.
データ構造とアルゴリズム論 第8章 再帰処理 平成15年12月2日 森田 彦.
プログラミング 平成25年11月5日 森田 彦.
データ構造と アルゴリズム論 平成29年9月27日 森田 彦.
ネットワークプログラミング論 平成28年12月26日 森田 彦.
CGプログラミング論 平成28年4月20日 森田 彦.
プログラミング 平成22年11月24日 森田 彦.
プログラミング 平成23年12月21日 森田 彦.
ソートアルゴリズムの種類 選択ソート (selection sort) バブルソート (bubble sort)
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
データ構造とアルゴリズム論 第3章 ファイルを用いたデータ入出力2
データ構造とアルゴリズム論 第3章 ファイルを用いたデータ入出力
データ構造とアルゴリズム論 終章 専門科目におけるプログラミング
わんくま同盟茶藝部顧問 Microsoft MVP for VC episthmh
データ構造とアルゴリズム論 第7章 再帰処理 平成17年12月6日 森田 彦.
データ構造とアルゴリズム論 第6章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第1章 アルゴリズムの表現-流れ図
プログラミングⅠ 平成30年10月29日 森田 彦.
ネットワークプログラミング論 平成28年12月19日 森田 彦.
データ構造とアルゴリズム論 第9章 木構造 平成29年12月20日 森田 彦.
データ構造とアルゴリズム論 第9章 木構造 平成30年6月27日 森田 彦.
データ構造とアルゴリズム論 第2回目テスト 平成16年12月14日 森田 彦.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
プログラミング 4 整列アルゴリズム.
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
2009/10/23 整列アルゴリズム (1) 第4講: 平成21年10月23日 (金) 4限 E252教室 コンピュータアルゴリズム.
プログラミングⅠ 平成30年10月15日 森田 彦.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
プログラミング 平成22年10月13日 森田 彦.
プログラミングⅠ 平成31年1月7日 森田 彦.
プログラミング 平成22年12月15日 森田 彦.
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
アルゴリズムとデータ構造 2011年6月23日
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
プログラミング 平成24年11月13日 森田 彦.
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
データ構造とアルゴリズム論 第7章 再帰処理 平成16年11月30日 森田 彦.
プログラミング 平成24年10月9日 森田 彦.
ソートのプログラムの流れ 配列の中身を小さい順に並び替える a[1],a[2],…a[n]の値を順に出力する
CGプログラミング論 平成28年7月6日 森田 彦.
アルゴリズムとデータ構造 2012年6月25日
データ構造とアルゴリズム論 第9章 連結リスト
CGプログラミング論 平成28年6月29日 森田 彦.
プログラミング 平成24年12月11日 森田 彦.
Presentation transcript:

データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム 平成29年11月22日 森田 彦

バブルソート A 10 9 12 2 ソート開始 10 9 12 2 A[0]>A[1]なので交換する。 9 10 12 2 [2] [3] A 10 9 12 2 ソート開始 10 9 12 2 A[0]>A[1]なので交換する。 9 10 12 2 A[1]<A[2]なので交換しない。 9 10 12 2 A[2]>A[3]なので交換する。 9 10 2 12 A[3]の値確定。 9 10 2 12 A[0]<A[1]なので交換しない。 9 10 2 12 A[1]<A[2]なので交換する。 9 2 10 12 A[2]の値確定。 9 2 10 12 A[0]>A[1]なので交換する 2 9 10 12 A[0],A[1]の値確定。→完了!

5-2 選択ソート <考え方-昇順の場合> 選択ソート 10 9 6 2 ソート開始時 10 9 6 2 最小値(の位置)を見つける 10 5-2 選択ソート <考え方-昇順の場合> 選択ソート 10 9 6 2 ソート開始時 10 9 6 2 最小値(の位置)を見つける 10 9 6 2 1番目のデータと交換する 2 9 6 10 1番目データの値確定 2 9 6 10 最小値(の位置)を見つける 2 9 6 10 2番目のデータと交換する 2 6 9 10 2番目データの値確定 という操作を繰り返す。 流れ図→p.78参照

5-3 挿入ソート 部分的に整列されている場合に効果的 例:A[1]~A[3]が整列済み(昇順) 余分な比較をしなくて良い。 A[4]を挿入 5-3 挿入ソート 部分的に整列されている場合に効果的 例:A[1]~A[3]が整列済み(昇順) 余分な比較をしなくて良い。 正しい位置に [1] [2] [3] [4] [5] A[4]を挿入 A 1 2 3 9 5 p.83の流れ図参照 1 2 3 9 5 A(3)<A(4)なので交換しない 1 2 3 9 5 A(1)~A(4)まで整列済み 1 2 3 9 5 A(5)を挿入 1 2 3 9 5 A(4)>A(5)なので交換する 1 2 3 5 9 A(3)<A(4)なので交換しない 1 2 3 5 9 ソート完了!

5-4 アルゴリズムの効率 比較回数と交換回数が少ないほど、効率は良い。 一般に・・・ 比較回数N: Nバブル=N選択≧N挿入 全てのペアについて比較 =n(n-1)/2 =n-1 バブルソートが最も効率が悪い。 プリント5-4節参照! 一般には、挿入ソートが効率が良い場合が多い。

学習に当たって ソート(処理)はアルゴリズム論の山場となる重要なところです。 挿入ソートの処理の流れを、シミュレーションプログラムを利用してよく理解して下さい。 本日の学習のポイントは、挿入ソートの流れ図を理解できるかどうかです。→トレースして流れを確認できればOK 理解できない場合は「どの部分が理解できないのか?」を自分なりにしぼって森田に尋ねて下さい。 【応用課題5-A】まで終えた学生は、演習を終えて結構です。