C言語での二分探索の説明
二分探索法は、ソートされたリストにのみ適用できます。与えられたリストは2つの等しい部分に分けられます。リストでは、キーが中央の要素と比較されています。
次の3つの状況がバイナリ検索で発生する可能性があります-
-
真ん中の要素がキーと一致する場合、検索はここで正常に終了します
-
中央の要素がキーよりも大きい場合、検索は左側のパーティションで続行されます
-
中央の要素がキーよりも低い場合、検索は適切なパーティションで続行されます。
入力(i / p)
ソートされた要素のリスト、キー。
出力(o / p)
- 成功-キーが見つかった場合。
- 失敗-それ以外の場合。
例
以下は二分探索法のCプログラムです-
#include<stdio.h>
int main(){
int a[50], n, i, key, flag = 0, low, mid, high;
printf("enter the no: of elements:");
scanf ("%d",&n);
printf("enter the elements:");
for(i=0; i<n; i++)
scanf( "%d", &a[i]);
printf("enter a key element:");
scanf ("%d", &key);
low = 0;
high = n-1;
while (low<= high ){
mid = (low + high) /2;
if (a[mid] == key){
flag = 1;
break;
} else {
if (a[mid] > key)
high = mid-1;
else
low = mid+1;
}
}
if (flag == 1)
printf ("search is successful");
else
printf("search is unsuccessful");
return 0;
} 出力
上記のプログラムを実行すると、次の結果が得られます-
enter the no: of elements:5 enter the elements:23 45 57 89 90 enter a key element:45 search is successful
-
C ++プログラムでの二分探索?
二分探索は、半区間探索、対数探索、または二分探索とも呼ばれ、ソートされた配列内のターゲット値の位置を見つける検索アルゴリズムです。二分探索は、ターゲット値を配列の中央の要素と比較します。それらが等しくない場合、ターゲットが存在できない半分が削除され、残りの半分で検索が続行され、再び中央の要素がターゲット値と比較され、ターゲット値が見つかるまでこれが繰り返されます。残りの半分が空の状態で検索が終了した場合、ターゲットは配列に含まれていません。アイデアは単純ですが、バイナリ検索を正しく実装するには、特に配列の値が範囲内の整数のすべてではない場合、終了条件と中間点の計算に関する微妙な点に注意する必要
-
C#での二分探索
バイナリ検索はソートされた配列で機能します。値は配列の中央の要素と比較されます。同等性が見つからない場合は、値が存在しない半分の部分が削除されます。同様に、残りの半分の部分が検索されます。 これが配列のmid要素です。 62を見つける必要があるとしましょう。そうすると、左側の部分が削除され、右側の部分が検索されます- これらは二分探索の複雑さです- 最悪の場合のパフォーマンス O(log n) ベストケースのパフォーマンス O(1) 平均パフォーマンス O(log n) 最悪の場合のスペースの複雑さ O(1) 例 二分