線形探索(Linear Search)は、リストや配列内の要素を順番に調べて、特定の値を見つける基本的なアルゴリズムです。本教材では、線形探索の概念、実装方法、そしてその動作を説明します。
線形探索は、リストの最初の要素から順に目的の要素を探していくシンプルなアルゴリズムです。最悪の場合、リストの全ての要素を調べる必要があるため、時間計算量はO(n)です。
例えば、以下のリストから数値5を探す場合を考えます。
numbers = [1, 3, 5, 7, 9]
このリストの中で5を見つけるために、1、3、5の順に調べます。
線形探索を実装するためのPythonコードを以下に示します。このコードは、リストとターゲットとなる値を引数に取り、その値がリスト内に存在するかどうかを確認します。
def linear_search(lst, target):
"""
リスト内のターゲットを線形探索で探す関数
:param lst: 探索対象のリスト
:param target: 探索する値
:return: 値が見つかった場合はインデックス、見つからなかった場合は-1
"""
for index in range(len(lst)):
if lst[index] == target:
return index # ターゲットが見つかった場合、そのインデックスを返す
return -1 # ターゲットが見つからなかった場合は-1を返す
linear_search
関数は、2つの引数を取ります。1つ目は探索対象のリスト(lst
)、2つ目は探したい値(target
)です。for
ループを使用してリストの全ての要素を順に調べます。線形探索を実際に使ってみましょう。以下の例では、リスト内の数値5を探します。
numbers = [1, 3, 5, 7, 9]
target = 5
result = linear_search(numbers, target)
if result != -1:
print(f"ターゲットの{target}は、インデックス{result}に存在します。")
else:
print(f"ターゲットの{target}はリスト内に存在しません。")
numbers
リストに数値を格納し、target
に探したい値を指定します。linear_search
関数を呼び出して、結果をresult
に格納します。上記のコードを実行すると、以下のような出力が得られます。
ターゲットの5は、インデックス2に存在します。
このように、線形探索を用いることで、リスト内の要素を簡単に検索することができます。
線形探索は、基本的で直感的な探索アルゴリズムですが、大きなデータセットに対しては効率が悪くなることがあります。次のステップとして、より効率的な探索方法である二分探索について学ぶことをお勧めします。