introduction searching algorithms c
C ++での検索アルゴリズムの概要。
私たちは日常生活の中で何かを探し続けています。私たちの日常生活と同じように、ソフトウェアの専門家として、私たちは自分のコンピューターで情報を検索する必要があります。情報検索に多くの時間を費やす余裕がないため、情報検索は迅速に行う必要があります。
したがって、ユーザーが他のタスクを続行できるように、特定の情報を短時間で検索してユーザーに提供できる、効率的な検索手法またはアルゴリズムが必要です。
=> 完全なC ++チュートリアルリストについては、こちらをご覧ください。
学習内容:
検索テクニック
情報の検索に主に使用される2つの主要な検索手法があります。
これらには以下が含まれます:
- 線形探索
- 二分探索
このチュートリアルでは、これらの検索手法の両方について詳しく説明します。
線形探索
これは最も基本的な検索手法であり、実装も簡単です。線形検索では、検索対象のキーがデータ収集のすべての要素と線形に比較されます。この手法は、線形データ構造で効果的に機能します。
次の配列を考えてみましょう。
上は7つの要素の配列です。キー= 23を検索する場合は、0から開始します。th要素の場合、キー値は各要素と比較されます。キー要素が配列内の要素と一致すると、その特定の場所が返されます。この場合、キー値がその場所の値と一致するため、場所が4で返されます。
以下に、C ++とJava言語を使用した線形検索を実装しました。
C ++の実装
#include #include using namespace std; int main() { int myarray(10) = {21,43,23,54,75,13,5,8,25,10}; int key,loc; cout<<'The input array is'<key; for (int i = 0; i<10; i++) { if(myarray(i) == key) { loc = i+1; break; } else loc = 0; } if(loc != 0) { cout<<'Key found at position '< 出力:
オラクルのパフォーマンスチューニングインタビューの質問と回答
入力配列は
21 43 23 54 75 13 5 8 25 10
検索するキーを入力してください:3
配列内に指定されたキーが見つかりませんでした
入力配列は
21 43 23 54 75 13 5 8 25 10
検索するキーを入力してください:75
配列の位置5にあるキー
Javaの実装
import java.util.*; import java.lang.*; import java.io.*; public class Main { public static void main(String() args) { int() myarray = {21,43,23,54,75,13,5,8,25,10}; int key,location=0; Scanner sc = new Scanner(System.in); System.out.println('The input array is'); for(int i=0;i<10;i++){ System.out.print(myarray(i)+' '); } System.out.println('
'); System.out.println('Enter key'); key = sc.nextInt(); for(int i = 0; i<10; i++) { if(myarray(i)==key) { location = i+1; break; } else location = 0; } if(location != 0) { System.out.println('key found at location ' + location); } else System.out.println('Key not found'); } }
出力:
入力配列は
21 43 23 54 75 13 5 8 25 10
Javaのメソッドに配列を渡す
キーを入力してください
2. 3
場所3で見つかったキー
線形検索は、ソートされた要素またはソートされていない要素を持つ任意の線形データ構造に対して実行できます。ただし、要素が多すぎて、各要素がキー値と比較されるため、キー要素が終わりに近づいている場合は、時間がかかります。
二分探索
二分探索は、「分割統治」手法を使用してキーを検索する手法です。これは、要素のソートされた線形リストで機能します。ソートされたリストは、バイナリ検索が機能するための基本的な要件です。
二分探索法では、リストは繰り返し半分に分割され、キーが見つかるまでリストの両方の半分でキー要素が検索されます。
例えば、次の10個の要素のソートされた配列を見てみましょう。

キー= 21が配列で検索されるとしましょう。
配列の中央の位置を計算してみましょう。
ミッド= 0 + 9/2 = 4
例えば、次の10個の要素のソートされた配列を見てみましょう。

キー= 21
まず、キー値を(mid)要素と比較します。 mid = 21の要素値が見つかります。

したがって、key = (mid)であることがわかります。したがって、キーが見つかります。
キー= 25

まず、キー値をmidと比較します。だから(21<25), we will directly search for the key in the upper half of the array.

ここでも、配列の上半分の中央が見つかります。
ミッド= 4 + 9/2 = 6
場所(mid)の値= 25

次に、key要素とmid要素を比較します。したがって(25 == 25)、位置(mid)でキーが見つかりました。
配列を繰り返し分割し、キー要素を中央と比較することで、どちらの半分でキーを検索するかを決定します。
以下に示すのは、バイナリ検索用のC ++およびJavaの実装です。
C ++の実装
#include #include using namespace std; int binarySearch(int myarray(), int beg, int end, int key) { int mid; if(end >= beg) { mid = (beg + end)/2; if(myarray(mid) == key) { return mid+1; } else if(myarray(mid) key; location = binarySearch(myarray, 0, 9, key); if(location != -1) { cout<<'Key found at location '< 出力:
入力配列は
5 8 10 13 21 23 25 43 54 75
検索するキーを入力してください:21
場所5で見つかったキー

Javaの実装
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main(String() args) { int() myarray = {5,8,10,13,21,23,25,43,54,75}; int key, location = -1; System.out.println('The input array is'); for(int i=0;i= beg) { mid = (beg + end)/2; if(myarray(mid) == key) { return mid+1; } else if(myarray(mid) 出力:
入力配列は
無料でDVDをリッピングする方法
5 8 10 13 21 23 25 43 54 75
検索するキーを入力してください
21
キーの場所は5です
二分探索は、時間と正確さの点でより効率的です。線形検索手法は、煩雑で時間がかかるため、ほとんど使用されません。線形検索と比較すると、バイナリ検索ははるかに高速です。
結論
検索技術は、ユーザーが情報処理の他のタスクに進むことができるように、コンピューターに保存されている情報を検索するのに役立ちます。線形探索手法は単純で簡単ですが、広く使用されていません。
二分探索技術ははるかに高速で効率的であるため、広く使用されています。
次のチュートリアルでは、さまざまな並べ替え手法について詳しく説明します。
=> ここで完璧なC ++トレーニングガイドをチェックしてください。
推奨読書
- Javaプログラミング言語入門-ビデオチュートリアル
- Appium Studioの概要:主な利点と機能
- STLのアルゴリズム
- 最高の無料C#チュートリアルシリーズ:初心者のための究極のC#ガイド
- JMeterビデオ1:はじめに、JMeterのダウンロードとインストール
- Pythonの導入とインストールプロセス
- Unixとは:Unixの簡単な紹介
- Micro Focus LoadRunnerの概要-LoadRunnerチュートリアル#1を使用した負荷テスト