Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

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

  1. C ++プログラムでの二分探索?

    二分探索は、半区間探索、対数探索、または二分探索とも呼ばれ、ソートされた配列内のターゲット値の位置を見つける検索アルゴリズムです。二分探索は、ターゲット値を配列の中央の要素と比較します。それらが等しくない場合、ターゲットが存在できない半分が削除され、残りの半分で検索が続行され、再び中央の要素がターゲット値と比較され、ターゲット値が見つかるまでこれが繰り返されます。残りの半分が空の状態で検索が終了した場合、ターゲットは配列に含まれていません。アイデアは単純ですが、バイナリ検索を正しく実装するには、特に配列の値が範囲内の整数のすべてではない場合、終了条件と中間点の計算に関する微妙な点に注意する必要

  2. C#での二分探索

    バイナリ検索はソートされた配列で機能します。値は配列の中央の要素と比較されます。同等性が見つからない場合は、値が存在しない半分の部分が削除されます。同様に、残りの半分の部分が検索されます。 これが配列のmid要素です。 62を見つける必要があるとしましょう。そうすると、左側の部分が削除され、右側の部分が検索されます- これらは二分探索の複雑さです- 最悪の場合のパフォーマンス O(log n) ベストケースのパフォーマンス O(1) 平均パフォーマンス O(log n) 最悪の場合のスペースの複雑さ O(1) 例 二分