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

データ構造とアルゴリズム (第3回)

N/A
N/A
Protected

Academic year: 2021

シェア "データ構造とアルゴリズム (第3回)"

Copied!
4
0
0

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

全文

(1)

1

データ構造とアルゴリズム

(第3回)

静岡大学工学部 安藤和敏 2006.12.07

http://coconut.sys.eng.shizuoka.ac.jp/algo/06/

2

章アルゴリズムの基本データ構造

2.1 配列 2.2 連結リスト 2.3 スタック 2.4 キュー

2

章アルゴリズムの基本データ構造

2.1 配列 2.2 連結リスト 2.3 スタック 2.4 キュー

配列

A

[0] [1] [2] [3] [4]

[n-2][n-1]

アルゴリズム2.1

(配列へのデータの追加)

入力:サイズnの配列A および追加するデータx アルゴリズム:

i=0;

while ((A[i]にデータが格納されている)&&(i<n)){

i=i+1;

}

if (i==n) { “配列に格納場所がない”と出力; } else { A[i] =x; }

4 8 11

A 2

[0] [1] [2] [3] [4]

i i i i

x 実行時間は

O(n)

第2章アルゴリズムの基本データ構造

2.1 配列 2.2 連結リスト 2.3 スタック 2.4 キュー

(2)

2

2

章アルゴリズムの基本データ構造

2.1 配列 2.2 連結リスト 2.3 スタック 2.4 キュー

複数の仕事やデータの処理の順番

あなたは図書館で勉強していた.そこへ,あなた の親友がやってきて恋愛相談に乗って欲しいと声 をかけられた.返事をしようとしていたら,親から携 帯に電話がかかってきた.

(A)図書館で勉強する.

(B)親友の恋愛相談に乗る.

(C)携帯電話にでる.

(C) →(B) →(A) の順番で仕事をするのが普通.

複数の仕事やデータの処理の順番

あなたはファーストフード店で注文を受けるバイト をしている.レジの前には3人の客が並んでいる.

あなたはこの3人の客から,

(A)チーズバーガーとコーラ (B)てりやきバーガーとコーヒー (C)フィッシュバーガーとコーヒー という順番で注文を受けた.

(A) →(B) →(C) の順番で仕事をする.

複数の仕事やデータの処理の順番

(1)処理要求の順番が遅いものから処理を済ませ る.

(2)処理要求の順番が早いものから処理を済ませ る.

アルゴリズムの分野では,(1) の処理方法をLIFO (Last In First Out の略,ライフォ,リフォと読む)と 呼び,(2) の処理をFIFO(First In First Out の略,

ファイフォ,フィフォと読む)と呼ぶ.

(1) のLIFO はスタック(stack) によって,(2) の

FIFO はキュー(queue) によって実現される.

スタックみたいなもの

スピンドルケース入りCD 本の山

スタックの概念図

1 4 3 2

5 6

取り出し 格納

(3)

3

スタックに対する操作(

push)

1 4 x 2

push(S,x): スタックS にデータx を格納する.

S

スタックに対する操作(

pop)

1 4 2

pop(S): スタックS からデータの取り出しを行い,

取り出したデータを出力する.

S

アルゴリズム2.4 (関数

push)

入力:サイズnの配列S および追加するデータx push (S,x) {

top = top + 1;

if (top == n) {

“オーバーフロー”と出力;

} else { S[top] = x;

}

} S 1 4 2

[0] [1] [2] [3] [4]

top==2top==3

x O(1)時間で 実行できる.

アルゴリズム2.4 (関数

pop)

入力:サイズnの配列S pop (S) {

if (top == -1) {

“アンダーフロー”と出力;

} else {

S[top] の値を出力;

top = top -1;

}

} S 1 4 2 3

[0] [1] [2] [3] [4]

top==2top==3 S[top] ==3 O(1)時間で 実行できる.

第2章アルゴリズムの基本データ構造

2.1 配列 2.2 連結リスト 2.3 スタック 2.4 キュー

キューみたいなもの

ラーメン屋

(4)

4

キューの概念図

1 4 2

3 5

取り出し 格納

キューに対する操作

(enqueue)

1 4 2

x

enqueue(Q,x): キューQ にデータx を格納する.

Q

キューに対する操作

(dequeue)

1 4 2

dequeue(Q): キューQ からデータの取り出しを行

い,取り出したデータを表示する.

Q

アルゴリズム2.5 (関数enqueue)

入力:サイズnの配列Q および追加するデータx enqueue (Q,x) {

Q[right] = x;

right = right + 1;

if (right == n) { right = 0; }

if (left == right) { “オーバーフロー”と出力; } }

1 4 2

Q

[0] [1] [2] [3] [4]

left==0 right==3

x right==4 O(1)時間で

実行できる.

アルゴリズム2.5 (関数

dequeue)

入力:サイズnの配列Q dequeue (Q) {

if (left == right) {

“アンダーフロー”と出力;

} else {

Q[left] の値を出力;

left = left + 1;

if (left == n) left = 0;

}

} Q 1 4 2 3

[0] [1] [2] [3] [4]

left==0 right==4 Q[left] ==1

left==1 O(1)時間で 実行できる.

宿題

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

参照

関連したドキュメント

つまり、p 型の語が p 型の語を修飾するという関係になっている。しかし、p 型の語同士の Merge

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

第1回 平成27年6月11日 第2回 平成28年4月26日 第3回 平成28年6月24日 第4回 平成28年8月29日

第6回赤潮( Skeletonema costatum 、 Mesodinium rubrum 第7回赤潮( Cryptomonadaceae ) 第7回赤潮(Cryptomonadaceae). 第8回赤潮( Thalassiosira

建屋構造 鉄⾻造、鉄筋コンクリート、鋼板コンクリート等、遮蔽機能と⼗分な強度を有 する構造

参考第 1 表 中空断面構造物の整理結果(7 号炉 ※1 ) 構造物名称 構造概要 基礎形式 断面寸法

・12月 9日 総合資源エネルギー調査会原子力安全・保安部会 耐震・構造設計 小委員会 第 24

第1回目 2015年6月~9月 第2回目 2016年5月~9月 第3回目 2017年5月~9月.