-
線形探索法: 最も基本的な方法は、線形探索法を使用することです。これは、配列内の各要素を順番に比較し、目的の値を見つけるまで続ける方法です。
def linear_search(array, targets): found_indices = [] for i in range(len(array)): if array[i] in targets: found_indices.append(i) return found_indices array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] targets = [2, 5, 9] result = linear_search(array, targets) print(result) # 出力: [1, 4, 8]
上記の例では、
linear_search
関数はarray
内のtargets
に一致する値のインデックスを返します。 -
ハッシュマップを使用した効率的な検索: もし配列が大きく、検索が頻繁に行われる場合は、ハッシュマップを使用することが推奨されます。ハッシュマップを使用すると、要素の検索が平均的に定数時間で行えます。
def hash_search(array, targets): hashmap = {} for i in range(len(array)): hashmap[array[i]] = i found_indices = [] for target in targets: if target in hashmap: found_indices.append(hashmap[target]) return found_indices array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] targets = [2, 5, 9] result = hash_search(array, targets) print(result) # 出力: [1, 4, 8]
上記の例では、
hash_search
関数はハッシュマップを作成し、targets
内の値に対応するインデックスを取得します。
これらの方法を使用することで、配列内の複数の値を効率的に検索することができます。必要に応じて、他の検索アルゴリズムやデータ構造も検討してみてください。