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

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
24
0
0

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

全文

(1)

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

静岡大学工学部 安藤和敏

2007.12.06

(2)

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

2.1

配列

2.2

連結リスト

2.3

スタック

2.4

キュー

(3)

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

2.1

配列

2.2

連結リスト

2.3

スタック

2.4

キュー

(4)

配列

A

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

[n-2][n-1]

(5)

アルゴリズム 2.1

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

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

i=0;

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

i=i+1;

}

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

else { A[i] =x; }

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

i i i i

実行時間は O(n)

(6)

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

2.1

配列

2.2

連結リスト

2.3

スタック

2.4

キュー

(7)

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

2.1

配列

2.2

連結リスト

2.3

スタック

2.4

キュー

(8)

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

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

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

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

(C) 携帯電話にでる.

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

(9)

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

あなたはファーストフード店で注文を受ける バイトをしている.レジの前には 3 人の客 が並んでいる.あなたはこの 3 人の客から (A) チーズバーガーとコーラ

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

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

(10)

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

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

せる.

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

In First Out の略,ファイフォ,フィフォと読

) と呼ぶ.

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

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

(11)

スタックみたいなもの

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

(12)

スタックの概念図

1 4 3 2

5 6

取り出し 格納

(13)

スタックに対する操作( push)

1 4 x 2

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

する.

(14)

スタックに対する操作( pop)

1 4 2

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

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

S

(15)

アルゴリズム 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) 時間 で実行でき

る.

(16)

アルゴリズム 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) 時間

で実行でき る.

(17)

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

2.1

配列

2.2

連結リスト

2.3

スタック

2.4

キュー

(18)

キューみたいなもの

ラ ー メ ン 屋

(19)

キューの概念図

1 4 2

3 5

取り出し 格納

(20)

キューに対する操作 (enqueue)

1 4 2

x

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

Q

(21)

キューに対する操作 (dequeue)

1 4 2

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

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

(22)

アルゴリズム 2.5 ( 関数 enqueu e)

入力 : サイズ 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) 時間

で実行でき る.

(23)

アルゴリズム 2.5 ( 関数 deque

入力 : サイズ n の配列

ue)

Q dequeue (Q) {

if (left == right) {

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

Q[left] の値を出力 ; left = left + 1;

if (left == n) left = 0;

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

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

left==1

O(1) 時間 で実行でき

る.

(24)

宿題

第2章の演習問題の全て( 2.1 (2) を除く).

(提出しなくてもよい.巻末の解答例を見て自己 採点せよ.)

参照

関連したドキュメント

Ocean Policy Research Foundation (OPRF), a Japanese non-profit organization, and Institute for Maritime Studies (IMS), an Indonesian non-profit organization, held three

Dual I/O リードコマンドは、SI/SIO0、SO/SIO1 のピン機能が入出力に切り替わり、アドレス入力 とデータ出力の両方を x2

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

回  テーマ  内  容 . 第 1 回 

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