線形探索アルゴリズムを楽しく学ぼう!(1)
リンク先のnotebookに基づいて、chatGPTが書きました。
線形探索アルゴリズムを楽しく学ぼう!~基本から応用まで~
こんにちは!プログラミング学習者の皆さん、今日は 線形探索(Linear Search) を一緒に楽しく学びましょう!この記事では、線形探索の基本から応用までをステップバイステップで解説します。そして、最後には「おおっ!」と感動するちょっとした応用例もご紹介します。
Pythonのコードはシンプルで、特に初心者でも理解しやすいように設計されています。また、中級者の皆さんも、「このアイデア使える!」と思える内容を盛り込んでいます。それでは、始めましょう!
線形探索って何?
まず最初に、線形探索の基本を押さえましょう。
線形探索とは、リスト(配列)の中から特定の値を探す方法です。探したい値(これを キー と呼びます)が見つかるまで、リストの先頭から1つずつ確認していきます。
線形探索のイメージ:
nums = [1, 2, 3, 4, 5]
key = 3
→ 1はkeyじゃない → 2はkeyじゃない → 3だ!見つけた!
単純だけど使い勝手抜群なこのアルゴリズム、さっそくコードで確認してみましょう!
線形探索をPythonで実装してみる
サンプルコード① 基本形
以下のコードを見てください。リストの中に「キー(探したい値)」があるかどうかを調べます。
# 探索する値
key = 3
# リスト
nums = [1, 2, 3, 4, 5]
# 線形探索
exist = False
for i in range(len(nums)): # リストの長さ分ループ
if nums[i] == key: # キーと一致する値が見つかったら
exist = True # 存在することを記録
# 結果出力
if exist:
print("Yes")
else:
print("No")
動作確認をしてみると、出力は…
Yes
おお!「3」が見つかりました!
サンプルコード② for文をもっとPythonicに!
Pythonには便利な構文がいろいろあります。その一つが for num in nums を使ったループです。以下のように書き換えても同じ結果が得られます。
key = 3
nums = [1, 2, 3, 4, 5]
exist = False
for num in nums: # リストの要素を直接ループ
if num == key:
exist = True
if exist:
print("Yes")
else:
print("No")
出力は…
Yes
おおっ!コードがスッキリして読みやすい!
応用:キーの場所を知りたい!
キーがリストに存在するかだけでなく、「どの位置にあるか」を知りたいこともありますよね?以下のコードで解決しましょう。
サンプルコード③ インデックスを取得
key = 3
nums = [1, 2, 3, 4, 5]
found_id = -1 # 初期値 -1 は見つからなかった場合
for i in range(len(nums)):
if nums[i] == key:
found_id = i # 見つかったらインデックスを記録
break # 見つかったらループ終了
print(found_id)
出力は…
2
やった!インデックス2(リストの3番目)に「3」がありました!
サンプルコード④ enumerate を使ってさらにPythonicに!
enumerate を使うと、インデックス付きでループを回すことができます。試してみましょう。
key = 3
nums = [1, 2, 3, 4, 5]
found_id = -1
for i, num in enumerate(nums): # インデックスと値を同時に取得
if num == key:
found_id = i
break
print(found_id)
出力は…
2
わかりやすくてクール!
応用:リストの最小値を探す!
最後に、少しだけレベルアップした問題に挑戦しましょう。リストの中で「最小値」を探すコードです。
nums = [20, 10, 30, 50, 40]
# 初期値を非常に大きな値に設定
INF = 20000000
min_value = INF
for num in nums:
if num < min_value: # 現在の最小値より小さい場合
min_value = num # 最小値を更新
print(min_value)
出力は…
10
お見事!リストの中で最も小さい値「10」を見つけました。
まとめ
今日学んだことをまとめてみましょう。
線形探索 は、リストの先頭から順番に要素を調べるシンプルなアルゴリズム。
Pythonの for num in nums や enumerate を使うと、もっと読みやすいコードが書ける。
線形探索は応用範囲が広く、最小値探索や条件を満たす要素の検索にも使える。
この先は、「線形探索」をさらに進化させた 二分探索 に挑戦してみましょう!線形探索の限界を超えるスピード感をぜひ体感してください。
では、Happy Coding! 🧑💻✨
この記事を読んでワクワクしたら、ぜひnotebookでコードを動かしてみてくださいね!