線形および二分探索アルゴリズムの説明

線形および二分探索アルゴリズムの説明

一部のデータを検索する機能は、コンピュータサイエンスの重要な側面です。検索アルゴリズムは、データセット内の特定のアイテムを検索するために使用されます。





アルゴリズムは、ブール結果(trueまたはfalse)を検索クエリに返します。それらは、見つかった値の相対位置を与えるように変更することもできます。





この記事では、アルゴリズムは値が存在するかどうかの判断に集中します。





線形探索アルゴリズム

線形検索は、順次検索とも呼ばれます。このタイプの検索では、リスト内の各値が、目的の値が存在するかどうかを確認しながら、順番に1つずつアクセスされます。

アルゴリズムは、探している値が見つかるか、検索する値がなくなるまで、値ごとにチェックします。検索する値が不足すると、検索クエリがリストに存在しないことを意味します。



順次検索アルゴリズムは、値のリストとリスト内の目的の項目をパラメーターとして受け取ります。戻り結果は次のように初期化されます NS に変更されます NS 目的の値が見つかったとき。

例として、以下のPython実装を参照してください。





def linearSearch(mylist, item):
found = False
index = 0
while index if mylist[index] == item:
found = True
else:
index = index+1
return found

アルゴリズム分析

最良のシナリオは、目的のアイテムがリストの最初のアイテムである場合に発生します。最悪の場合は、目的のアイテムがリストの最後(n番目のアイテム)である場合に発生します。したがって、線形探索の時間計算量はO(n)です。

上記のアルゴリズムの平均的なシナリオはn / 2です。





関連している: Big-O表記とは何ですか?

使用されるアルゴリズムは、アイテムのランダムなリストが提供されることを前提としていることを知っておくことが重要です。つまり、リストアイテムは特定の順序ではありません。

新しいメールアドレスを作成する

アイテムが特定の順序、たとえば最小から最大の順序であったとします。計算においていくつかの利点を達成することは可能です。

与えられたリストで19を探す例を見てください:[2、5、6、11、15、18、23、27、34]。 23に達すると、探しているアイテムがリストに存在しないことが明らかになります。したがって、残りのリスト項目を検索し続けることはもはや重要ではありません。

二分探索アルゴリズム

順序付きリストが必要な計算をどのように減らすことができるかを見てきました。二分探索アルゴリズムは、順序付きリストを持つことでもたらされるこの効率をさらに活用します。

アルゴリズムは、順序付きリストの中間値を取得し、それが目的の値であるかどうかを確認することから始まります。そうでない場合は、値が目的の値よりも小さいか大きいかがチェックされます。

それより少ない場合は、リストの下半分を確認する必要はありません。それ以外の場合、それが大きい場合は、リストの上半分に移動します。

関連:再帰とは何ですか?どのように使用しますか?

どちらのサブリスト(左または右)が選択されたかに関係なく、中央の値が再度決定されます。値が必要な値であるかどうかが再度チェックされます。そうでない場合は、要求された値よりも小さいか大きいかがチェックされます。

Windowsはコードクロックウォッチドッグタイムアウトを停止します

このプロセスは、値が見つかるまで繰り返されます。

以下のPython実装は、バイナリ検索アルゴリズム用です。

def binarySearch(mylist、item):

low = 0
high = len(mylist) - 1
found = False
while low <= high and not found: mid = (low + high) // 2
if mylist[mid] == item:found = True
elif item else:low = mid + 1
return found

アルゴリズム分析

最良のシナリオは、目的のアイテムが中間のアイテムであることが判明した場合に発生します。ただし、最悪のシナリオはそれほど単純ではありません。以下の分析に従ってください。

最初の比較の後、n / 2個のアイテムが残ります。 2回目以降はn / 4個のアイテムが残ります。 3回目以降はn / 8。

アイテムの数は、n / 2iに達するまで半分になり続けることに注意してください。ここで、iは比較の数です。すべての分割の後、1つのアイテムだけになります。

これは、次のことを意味します。

n / 2i = 1したがって、二分探索はO(log n)です。

並べ替えに移る

二分探索では、与えられた配列がすでに順序付けられている場合を考慮しました。ただし、順序付けされていないデータセットがあり、そのデータセットに対してバイナリ検索を実行したいとします。あなたならどうしますか?

答えは簡単です:それをソートします。コンピュータサイエンスには、十分に研究された多くの分類手法があります。学習を開始できるこれらの手法の1つは、選択ソートアルゴリズムですが、他の分野に関連するガイドもたくさんあります。

共有 共有 つぶやき Eメール 選択ソートの使用方法

選択ソートは、初心者には理解するのが少し難しいですが、物事のスイングを取得したら、それほど難しいことではありません。

次を読む
関連トピック
  • プログラミング
  • テクノロジーの説明
  • プログラミング
  • アルゴリズム
  • データ分析
著者について ジェローム・デビッドソン(22の記事が公開されました)

ジェロームはMakeUseOfのスタッフライターです。彼はプログラミングとLinuxに関する記事をカバーしています。彼は暗号愛好家でもあり、常に暗号業界を監視しています。

ジェローム・デビッドソンのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください