Day 233簡単な線形探索を実装する
Pythonコード
1def linear_search(arr, target):2 for i in range(len(arr)):3 if arr[i] == target:4 return i5 return -16 7data = [1, 2, 3, 4, 5]8target = 39result = linear_search(data, target)10if result != -1:11 print(f"要素{target}はインデックス{result}にあります")12else:13 print(f"要素{target}は見つかりませんでした")
解説
- 行1〜2: linear_search という関数を定義します。この関数は、リスト arr と探索対象の要素 target を受け取ります。len() はリストの要素数を返します。range() は 0 から len(arr) - 1 までの数字のシーケンスを作ります。len() と range() は組み込み関数で、len() はリストの長さを返し、range() は指定された範囲の数字のシーケンスを作ります。
- 行3〜4: for ループでリストの各要素をチェックします。if 文で、現在の要素が target と一致するかどうかを確認します。一致した場合、そのインデックス i を返します。
- 行5: ループが終了して target が見つからなかった場合、-1 を返します。これは、インデックスが 0 から始まるため、-1 は有効なインデックスではありません。
- 行7〜8: サンプルデータと探索対象の要素を設定します。
- 行9: linear_search 関数を呼び出し、結果を変数 result に格納します。
- 行10〜13: result が -1 でない場合、要素が見つかったことを示し、インデックスを表示します。-1 の場合、要素が見つからなかったことを示します。print() は画面に文字や値を表示する組み込み関数です。
- 行11〜13: 補足: f文字列は、文字列内に式を埋め込むことができます。
次に試してみよう
- リストの要素をランダムに生成し、線形探索を実行してみましょう。
- 探索対象の要素をユーザー入力から受け取り、線形探索を実行してみましょう。入力は try/except で囲み、数値変換のエラーを処理しましょう。
- 線形探索の時間計算量を考えてみましょう。