線形探索
線形探索(せんけいたんさく、英: linear search, sequential search)は、検索のアルゴリズムの一つ。 リストや配列に入ったデータに対する検索を行うにあたって、 先頭から順に比較を行い、それが見つかれば終了する。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ソートされていないリストが与えられて、その中から、目的の対象を検索することを考えます。
線形探索は、単純に、リストを最初から一つずつ、値が見つかるまで検索します。
リストから該当をするものを1つ探す場合は、時間計算量は \(O(n)\)、空間計算量は \(O(1)\) になります。
import random def linear_search(lst, target_val): for i in range(len(lst)): if lst[i] == target_val: return i return False def print_serach_result(lst, target_val): target_index = linear_search(lst, target_val) if target_index: print(f'{target_val}は{target_index+1}番目に見つかりました。') else: print(f'{target_val}はリストの中にありません。') if __name__ == '__main__': # 適当なリストの生成 random.seed(1) lst = [random.randint(1, 100) for _ in range(10)] # [18, 73, 98, 9, 33, 16, 64, 98, 58, 61] print(lst) # 線形探索 # 64は7番目に見つかりました。 print_serach_result(lst, 64) # 63はリストの中にありません。 print_serach_result(lst, 63)
想定通りの結果を得ることができました。