データ構造とアルゴリズム (第3回) 静岡大学工学部 安藤和敏 2007.12.06.

Slides:



Advertisements
Similar presentations
Generic programming と STL
Advertisements

プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
ヒープソートの演習 第13回.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
5.データ構造入門 5-1.連結リスト(Linked List) 5-2.スタック(Stack) 5-3.キュー(Queue)
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
データ構造とアルゴリズム 第10回 mallocとfree
基本情報技術概論(第4回) 埼玉大学 理工学研究科 堀山 貴史
2章 データ構造.
最終回 総合演習 第13回目 [7月17日、H.15(‘03)] 本日のメニュー 1)総合演習課題 2)過去の試験問題 3)試験について
Ibaraki Univ. Dept of Electrical & Electronic Eng.
アルゴリズムとデータ構造 第6回演習解答 2015/11/18実施 アルゴリズムとデータ構造 2015.
2009/10/9 良いアルゴリズムとは 第2講: 平成21年10月9日 (金) 4限 E252教室 コンピュータアルゴリズム.
コンパイラ 第9回 コード生成 ― スタックマシン ―
C言語 配列 2016年 吉田研究室.
情報工学概論 (アルゴリズムとデータ構造)
アルゴリズムとデータ構造 第3回基本的なデータ構造(リスト) 2015/10/28 アルゴリズムとデータ構造 2015.
第8回 プログラミングⅡ 第8回
情報理論2 第6回 小林 学 湘南工科大学 2011年11月15日 〒 神奈川県藤沢市辻堂西海岸1-1-25
プログラミング論 II 電卓,逆ポーランド記法電卓
データ構造とアルゴリズム 第13回 スタックとキュー
データ構造とアルゴリズム 第5回 スタック ~ データ構造(2)~.
Stack & Queue & List 3.
アルゴリズムと データ構造 第4回 スタック・キュー.
第4章 空間解析 2.ネットワーク分析 (3) ネットワーク構造分析
エージェントを管理するボスの苦悩 問題 n人のエージェントを部下に持つボスがいる. エージェントは出張・帰還を頻繁に繰り返す.
アルゴリズムとデータ構造 第2回 線形リスト(復習その2).
アルゴリズムとデータ構造 第4回 配列によるスタックとキュー.
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
第13回 ハッシュテーブルを使ったプログラム ~高速に検索するには?~.
二分探索木によるサーチ.
データ構造とプログラミング技法 (第2回) ー線形構造ー.
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
アルゴリズムとデータ構造 2011年7月4日
アルゴリズムとデータ構造 2012年6月28日
アルゴリズムとデータ構造 2011年6月27日
データ構造とアルゴリズム (第2回) ー線形構造ー.
EVENT プログラミングのスタイル 手続き型: ある決められた場所から開始され, その後は純粋に上から下に流れて行く方式. 実行したいことを, 順番に記述してゆく. 逐次処理形式コーディングの方法である。 今までの授業(情報処理2や3)で 行ってきたプログラミングの演習 bcc32やmake 手続き型.
東京工科大学 コンピュータサイエンス学部 亀田弘之
データ構造とアルゴリズム 第6回 キュー ~ データ構造(2)~.
データ構造と アルゴリズム第4回 知能情報学メジャー 和田俊和.
情報とコンピュータ 静岡大学工学部 安藤和敏
プログラミング言語論 第13回 オブジェクト指向 情報工学科 篠埜 功.
第7回課題 フィボナッチ数列 (コード:p.171) について,fib(4) を呼び出したときの起こる出来事は以下の通りである.
2009/10/23 整列アルゴリズム (1) 第4講: 平成21年10月23日 (金) 4限 E252教室 コンピュータアルゴリズム.
プログラミング 3 スタックとキュー.
算法数理工学 第8回 定兼 邦彦.
明星大学 情報学科 2012年度 後期   情報技術Ⅱ   第8回
アルゴリズムとデータ構造 2011年7月8日課題の復習
スタックとキュー データ構造とプログラミング (第5回).
基本情報技術概論I (第4回) 埼玉大学 理工学研究科 堀山 貴史
プログラミング演習Ⅲ- Sorting Quick Sort and Merge Sort
6.データ構造入門 6-1.連結リスト(Linked List) 6-2.スタック(Stack) 6-3.キュー(Queue)
情報とコンピュータ 静岡大学工学部 安藤和敏
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
算法数理工学 第7回 定兼 邦彦.
情報数理Ⅱ 第11章 データ構造 平成29年1月18日.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
アルゴリズムからプログラムへ GRAPH-SEARCH
基本情報技術概論(第5回) 埼玉大学 理工学研究科 堀山 貴史
アルゴリズムとデータ構造 2013年7月1日
基本情報技術概論(第5回) 埼玉大学 理工学研究科 堀山 貴史
第11回放送授業.
アルゴリズムとデータ構造 2013年7月8日
pf-6. スタック (Python プログラミング基礎を演習で学ぶシリーズ)
データ構造と アルゴリズムI 第三回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2012年7月9日
Presentation transcript:

データ構造とアルゴリズム (第3回) 静岡大学工学部 安藤和敏 2007.12.06

第2章アルゴリズムの基本データ構造 2.1 配列 2.2 連結リスト 2.3 スタック 2.4 キュー

第2章アルゴリズムの基本データ構造 2.1 配列 2.2 連結リスト 2.3 スタック 2.4 キュー

配列 [0] [1] [2] [3] [4] [n-2] [n-1] A …

アルゴリズム2.1 (配列へのデータの追加) 入力:サイズ n の配列 A および追加するデータ x アルゴリズム: i=0; while ((A[i]にデータが格納されている)&&(i<n)){ i=i+1; } if (i==n) { “配列に格納場所がない”と出力; } else { A[i] =x; } 実行時間はO(n) i i i i [0] [1] [2] [3] [4] A 4 8 11 x 2

第2章アルゴリズムの基本データ構造 2.1 配列 2.2 連結リスト 2.3 スタック 2.4 キュー

第2章アルゴリズムの基本データ構造 2.1 配列 2.2 連結リスト 2.3 スタック 2.4 キュー

複数の仕事やデータの処理の順番 あなたは図書館で勉強していた.そこへ,あなたの親友がやってきて恋愛相談に乗って欲しいと声をかけられた.返事をしようとしていたら,親から携帯に電話がかかってきた. 図書館で勉強する. 親友の恋愛相談に乗る. 携帯電話にでる. (C) → (B) → (A) の順番で仕事をするのが普通.

複数の仕事やデータの処理の順番 あなたはファーストフード店で注文を受けるバイトをしている.レジの前には3人の客が並んでいる.あなたはこの3人の客から, チーズバーガーとコーラ てりやきバーガーとコーヒー フィッシュバーガーとコーヒー という順番で注文を受けた. (A) → (B) → (C) の順番で仕事をする.

複数の仕事やデータの処理の順番 処理要求の順番が遅いものから処理を済ませる. 処理要求の順番が早いものから処理を済ませる. アルゴリズムの分野では,(1) の処理方法を LIFO (Last In First Out の略,ライフォ,リフォと読む)と呼び,(2) の処理をFIFO (First In First Out の略,ファイフォ,フィフォと読む)と呼ぶ. (1) のLIFO はスタック (stack) によって,(2) のFIFO はキュー (queue) によって実現される.

スタックみたいなもの スピンドルケース入りCD 本の山

スタックの概念図 格納 取り出し 6 3 2 4 1 5

スタックに対する操作(push) push(S,x): スタック S にデータ x を格納する. x 2 4 1 S

スタックに対する操作(pop) pop(S): スタック S からデータの取り出しを行い,取り出したデータを出力する. 2 4 1 S

アルゴリズム2.4 (関数 push) 入力:サイズ n の配列 S および追加するデータ x push (S,x) { top = top + 1; if (top == n) { “オーバーフロー”と出力; } else { S[top] = x; } O(1)時間で実行できる. top==2 top==3 [0] [1] [2] [3] [4] S 1 4 2 x

アルゴリズム2.4 (関数 pop) 入力:サイズ n の配列 S pop (S) { if (top == -1) { “アンダーフロー”と出力; } else { S[top] の値を出力; top = top -1; } O(1)時間で実行できる. S[top] ==3 top==2 top==3 [0] [1] [2] [3] [4] S 1 4 2 3

第2章アルゴリズムの基本データ構造 2.1 配列 2.2 連結リスト 2.3 スタック 2.4 キュー

キューみたいなもの ラーメン屋

キューの概念図 3 5 1 4 2 取り出し 格納

キューに対する操作 (enqueue) enqueue(Q,x): キュー Q にデータ x を格納する. x 1 4 2 Q

キューに対する操作 (dequeue) dequeue(Q): キュー Q からデータの取り出しを行い,取り出したデータを表示する. 1 4 2 Q

アルゴリズム2.5 (関数enqueue) 入力:サイズ n の配列 Q および追加するデータ x enqueue (Q,x) { Q[right] = x; right = right + 1; if (right == n) { right = 0; } if (left == right) { “オーバーフロー”と出力; } } left==0 right==3 right==4 [0] [1] [2] [3] [4] O(1)時間で実行できる. Q 1 4 2 x

アルゴリズム2.5 (関数 dequeue) 入力:サイズ n の配列 Q dequeue (Q) { if (left == right) { “アンダーフロー”と出力; } else { Q[left] の値を出力; left = left + 1; if (left == n) left = 0; } O(1)時間で実行できる. Q[left] ==1 left==0 left==1 right==4 [0] [1] [2] [3] [4] Q 1 4 2 3

宿題 第2章の演習問題の全て(2.1の(2)を除く).(提出しなくてもよい.巻末の解答例を見て自己採点せよ.)