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) 例 二分