アルゴ道場
動かして学ぶ 基本情報アルゴリズム
ホーム探索線形探索FE頻出逐次探索

線形探索 Linear Search

配列を先頭から1つずつ調べ、目的の値 target と一致した時点でその位置(1始まり)を結果に記録します。見つからなければ -1 のままです。

ここでは「結果が未確定(-1)の間だけ繰り返す」while ループで、最初に一致した位置で探索を打ち切ります。整列されていない配列でも使えるのが利点です。

📖 記号の読み方(はじめての人はここを確認)
代入(右の値を左の箱に入れる)。例: 合計 ← 0
=等しいか比べる(代入ではない)
等しくない(≠ は != と書いてもOK)
≤ / ≥以下 / 以上(<= / >= でもOK)
×かけ算(* でもOK)
÷わり算。答えの小数は捨てる(例: 7÷2=3)。/ でもOK
%わり算の余り(例: 7%2=1)
要素数(配列)配列の箱の数。2次元では 行数()・列数()
▲i / ▲j配列の下の三角は「いまコードが見ている位置」
algorithm.pseudo擬似言語 / IPA形式
1整数型の配列: data
2整数型: i, target, 結果
3i ← 1
4結果 ← -1
5while (i ≤ 要素数(data) and 結果 = -1)
6 if (data[i] = target)
7 結果 ← i
8 endif
9 i ← i + 1
10endwhile
実行を開始します

配列の可視化

箱の番号(添字)は 1 から始まります
▶ 整数型の配列: data
実行を開始します
data
8
[1]
3
[2]
9
[3]
1
[4]
6
[5]
4
[6]
7
[7]
2
[8]
← よこにスクロールできます →
まだ見ていないいま見ている数字を書きかえた完了
マスの下の ▲i は「いまコードが見ている位置」・ 棒の高さは数の大きさ
くらべた回数
0
書きかえた回数
0
読んだ回数
0
変数の状態(いまの値)
i=
位置(カウンタ)
target=6
探す値
結果=
見つかった位置(無ければ-1)
1 / 21
速度

理解度チェック

解答すると、そのアルゴリズムが実際に動く様子を再生して確認できます。

確認問題 1

要素数 n の配列を線形探索するとき、目的の値が存在しない場合の比較回数はおよそ何回か。

📊 計算量(速さの目安)— くわしく知りたい人向け

「計算量」は、データが増えたときに手間(時間)がどれくらい増えるかの目安です。n はデータの個数。記号の意味は各カードの下に書いてあります。

最良(いちばん速い場合)
O(1)
データが増えても一定(最速)
平均(ふつう)
O(n)
データの数に比例して増える(ふつう)
最悪(いちばん遅い場合)
O(n)
データの数に比例して増える(ふつう)
使う追加メモリ(空間)
O(1)
データが増えても一定(最速)

このサイトは、使い方を改善するためにアクセス解析(Google Analytics・Cookie)を利用します。