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

アルゴリズム論 (第10回)

N/A
N/A
Protected

Academic year: 2021

シェア "アルゴリズム論 (第10回)"

Copied!
7
0
0

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

全文

(1)

アルゴリズム論

(第10回)

佐々木研(情報システム構築学講座)

講師

山田敬三

[email protected]

(2)

探索

(3)

線形探索

配列a

要素a[i](i=0,1,・・・,n-1)

配列aから値xを探索

i=0n-1まで,以下を繰り返す.

a[i]xを比較

a[i]==x なら終了

(4)

二分探索 (binary search)

前提条件

要素

a[i](i=0,1,

・・・

,N-1)

について

a[0]<a[1]<

・・・

<a[N-1]

が成立

配列

a

から

x

の場所を求める方法

• x

が配列

a

にあるか否か,配列のどの要素よ りも大きいか,小さいかも返値とする

返値

0 x ≦ a[0]

• i= j a[j-1]<x ≦ a[j] (0

j ≦ N-1)

N a[N-1]<x

(5)

二分探索 (binary search)

アルゴリズム (

P.82

83

1. x≦a[0]またはx>a[n-1]であるかどうかを調査する。

そうでなければ、a[0]<x≦a[n-1]の場合のみを考える。

2. leftrightについて初期化する left=0, right=n-1

3. 探索する配列の中央を探す middle = (left + right) / 2

4. xと中央の値a[middle]を比較する

1. xa[middle]以下の場合は、新しい探索配列の右側を

middleにする

2. xa[middle]よりも大きい場合は、新しい探索配列の左側

middleにする

5. 34 right-left<=1になるまで繰り返す。

(6)

計算量

• 検索範囲は比較する段階で元の配列 の 1/2 となる

• 比較する回数 k は、全体の要素数 N と すると 2

k

= N

すなわち k=log

2

N

• よって、

O(logN)

(7)

使うときの注意点

検索結果iを用いて必ず配列を確認する

アルゴリズムはnを返すことがあるが,配列はa[n-1]までしか 値がない

xが配列aの中に見つかるとは限らない.すなわち,x == a[i] は限らないので, 検査する必要がある.

参照

関連したドキュメント

乗次 章子 非常勤講師 社会学部 春学期 English Communication A11 乗次 章子 非常勤講師 社会学部 春学期 English Communication A23 乗次 章子

条第三項第二号の改正規定中 「

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

そして会場は世界的にも有名な「東京国際フォーラ

エドワーズ コナー 英語常勤講師(I.E.F.L.) 工学部 秋学期 英語コミュニケーションIB19 エドワーズ コナー

講師 (一般)ダイバーシティ研究所 代表理事/復 興庁復興推進参与

9月30日 (水) 構造(船殻)設計 ・講師:小沼 守 ・講師:中尾 強志 ・講師:佐々木 吉通(NK) ・講師:宇宿 行史(NK)