わんくま同盟茶藝部顧問 Microsoft MVP for VC episthmh

Slides:



Advertisements
Similar presentations
アルゴリズムと データ構造 第 3 回 基本的なデータ構造(2) : 配列 1. 前回の復習 アルゴリズムの計算量 最悪(最大)計算量 計算量の漸近的評価 (オーダ)  多項式時間アルゴリズム( polynomial time algorithm )  指数時間アルゴリズム( exponential.
Advertisements

逐次ソート 2011/05/16. ソート(sort) 順序集合の要素a 1 … a n の上下関係を整 える 一般的には、整数の集合 N を考えればよ い ソートの計算量が問題となる どのような入力に対し、どのようなアル ゴリズムが最適か?
4.3 マージソート.
離散システム特論 整列(sorting)アルゴリズム 2.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
ヒープソートの演習 第13回.
アルゴリズムイントロダクション第2章 主にソートに関して
4.ソート 4-1.ソート問題について 4-2.簡単なソートアルゴリズム 4-3.高度なソートアルゴリズム
アルゴリズムとデータ構造 2012年6月27日
第12回 ソート(3): シェルソート、クイックソート
アルゴリズムとデータ構造1 2008年7月22日
高速ソートと 安定結婚問題 平成24年12月14日.
第10回 整列 ~ バブルソート,挿入ソート,選択ソート~
第11回 整列 ~ シェルソート,クイックソート ~
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
第7講: 平成19年11月2日 (金) 4限 E252教室 クイックソートと オーダー記法.
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
4-3:高度なソートアルゴリズム① (分割統治法にもとづくソート)
1. アルゴリズムと計算量.
4.整列のアルゴリズム.
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
第10回 ソート(1):単純なソートアルゴリズム
アルゴリズムとデータ構造 補足資料7-3 「単純選択ソートselsort.c」
データ構造とアルゴリズム 分割統治 ~ マージソート~.
岩井 儀雄 コンピュータ基礎演習  ー探索、整列ー 岩井 儀雄
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
アルゴリズム入門.
第11回 整列 ~ シェルソート,クイックソート ~
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
2009/11/6 整列アルゴリズムの復習 第6講: 平成21年11月6日 (金) 4限 E252教室 コンピュータアルゴリズム.
アルゴリズムとデータ構造1 2006年6月16日
情報工学概論 (アルゴリズムとデータ構造)
アルゴリズムとデータ構造1 2005年7月15日
ソートアルゴリズムの種類 選択ソート (selection sort) バブルソート (bubble sort)
情報工学概論 (アルゴリズムとデータ構造)
データ構造とアルゴリズム論 第6章 整列(ソート)のアルゴリズム
アルゴリズムとデータ構造1 2005年7月1日
クイックソート.
大岩 元 慶応大学環境情報学部 再帰 データ構造とプログラミング(8) 大岩 元 慶応大学環境情報学部
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
アルゴリズムとプログラミング (Algorithms and Programming)
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
復習その1+α JBuilderの使い方を思い出す。 配列とGUI
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
プログラミング 4 整列アルゴリズム.
2009/10/23 整列アルゴリズム (1) 第4講: 平成21年10月23日 (金) 4限 E252教室 コンピュータアルゴリズム.
プログラミング 4 探索と計算量.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
アルゴリズムとデータ構造1 2006年7月11日
アルゴリズムとデータ構造 2011年6月23日
プログラミング演習Ⅲ- Sorting Quick Sort and Merge Sort
B+Treeのバケットサイズ.
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
アルゴリズムとプログラミング (Algorithms and Programming)
基本情報技術概論(第5回) 埼玉大学 理工学研究科 堀山 貴史
バブルソート,バケツソート,クイックソート
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第5回) 埼玉大学 理工学研究科 堀山 貴史
nativeの基礎知識 「ポインタ」てなによ!?
ソートのプログラムの流れ 配列の中身を小さい順に並び替える a[1],a[2],…a[n]の値を順に出力する
アルゴリズムとデータ構造 2012年6月25日
ヒープソート.
ヒープソート.
参考:大きい要素の処理.
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

わんくま同盟茶藝部顧問 Microsoft MVP for VC++ 2004- episthmh episteme@cppll.jp 脱ビギナ講座: 計算量とソートいろいろ わんくま同盟茶藝部顧問 Microsoft MVP for VC++ 2004- episthmh episteme@cppll.jp

アルゴリズムの性能を示す目安のひとつ。 「時間計算量」 どんだけ時間を食うか 「空間計算量」 どんだけ記憶域を食うか 「計算量」とは ※ 今回お話するのは主に時間計算量

O(T) と表記し、 ある計算/処理に要する時間/空間がTに比例するとき、その時間/空間計算量を O記法 (O-notation)

O(N) O(logN) 要素数Nの配列から特定の値を探す 要素数Nのソートされた配列から…であれば 二分法によって 要素数Nのリストだと、 O-notationの例 要素数Nの配列から特定の値を探す O(N) 要素数Nのソートされた配列から…であれば   二分法によって O(logN) 要素数Nのリストだと、   たとえソートされていても   O(N)

バブルソート 選択ソート 挿入ソート シェーカーソート シェルソート マージソート ヒープソート クイックソート などなど… ソート・アルゴリズム…どんだけ知ってる? バブルソート 選択ソート 挿入ソート シェーカーソート シェルソート マージソート ヒープソート クイックソート  などなど…

a[0], a[1], a[2], …. a[N-1] をソートするには: 選択ソート a[0], a[1], a[2], …. a[N-1] をソートするには: a[0] ~ a[N-1] のうち、最小の要素をa[0]と交換 a[1] ~ a[N-1] のうち、最小の要素をa[1]と交換 a[2] ~ a[N-1] のうち、最小の要素をa[2]と交換 … a[i] ~ a[N-1] のうち、最小の要素をa[i]と交換 i = N-1 となったらソート完了。

N個の要素から最小値を見つけるための比較回数はN-1回なので、 選択ソートの時間計算量 N個の要素から最小値を見つけるための比較回数はN-1回なので、 (N-1) + (N-2) + (N-3) + … + (1) ← ()はN-1個 = N(N-1)/2 = N^2/2 – N/2 → O(N^2) ※ 最も次数の大きいもののみを計算量とする ※ 係数(ここでは1/2)は無視する 時間計算量はおおむね、要素数の二乗に比例する

a[0], a[1], a[2], …. a[N-1] をソートするには: 適当な値Pを決め、 それ未満のグループ(L)と クイックソート a[0], a[1], a[2], …. a[N-1] をソートするには: 適当な値Pを決め、  それ未満のグループ(L)と それ以上のグループ(R)とに分割する L, R それぞれに対し上記の処理を施す グループ内の要素数が1以下になれば終了

クイックソート 3 2 7 8 0 5 1 9 4 6 P = 6 P = 4 3 2 4 1 0 5 P = 7 8 9 7 6 3 2 1 4 5 6 9 7 8

N個の要素をLとRに分割する計算量はO(N) クイックソートの時間計算量 N個の要素をLとRに分割する計算量はO(N) 1回の操作でグループ内の要素数はおよそ1/2   → およそ logN 回で終了 → O(N logN) ※ 最悪ケースでは O(N^2)