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

二分探索のためのCプログラム(再帰的および反復的)?


二分探索アルゴリズムは、比較および分割メカニズムに基づくアルゴリズムです。二分探索アルゴリズムは、半区間探索、対数探索、または二分探索とも呼ばれます。 。二分探索アルゴリズムは、ソートされた配列内のターゲット値の位置を検索します。ターゲット値を配列の中央の要素と比較します。要素がターゲット要素と等しい場合、アルゴリズムはインデックスを返します 見つかった要素の。そして、それらが等しくない場合、検索アルゴリズムはその配列の半分のセクションを使用します。値の比較に基づいて、アルゴリズムは前半(値が中央よりも小さい場合)と後半(値が中央よりも小さい場合)のいずれかを使用します。値が中央よりも大きい場合)。そして、次のアレイの半分についても同じことを行います。

Input:
A[] = {0,2,6,11,12,18,34,45,55,99}
n=55
Output:
55 at Index = 8

説明

アレイの場合 -

55を、配列の中央の要素である18(55未満)と比較するため、配列の後半、つまり配列{24、45、55、99}を使用します。ここでも、中央は55です。検索要素の値を確認してください。値が一致した場合、この値のインデックスは8で返されます。

検索要素が前半を使用した場合よりも中央よりも小さい場合は、要素が配列の中央に見つかるまで続行します。

二分探索を実装するには、2つの方法でコードを記述できます。これらの2つの方法は、バイナリ検索要素をチェックする関数を呼び出す方法でのみ延期されます。それらは:

  • 反復の使用 −これは、真ん中の要素が等しいかどうかをチェックする関数内のループを使用することを意味します。

  • 使用 このメソッドでは、関数は異なる値のセットを使用して何度も自分自身を呼び出します。

#include<stdio.h>
int iterativeBsearch(int A[], int size, int element);
int main() {
   int A[] = {0,12,6,12,12,18,34,45,55,99};
   int n=55;
   printf("%d is found at Index %d \n",n,iterativeBsearch(A,10,n));
   return 0;
}
int iterativeBsearch(int A[], int size, int element) {
   int start = 0;
   int end = size-1;
   while(start<=end) {
      int mid = (start+end)/2;
      if( A[mid] == element) {
         return mid;
      } else if( element < A[mid] ) {
         end = mid-1;
      } else {
         start = mid+1;
      }
   }
   return -1;
}

出力

55 is found at Index 8

#include<stdio.h>
int RecursiveBsearch(int A[], int start, int end, int element) {
   if(start>end) return -1;
      int mid = (start+end)/2;
   if( A[mid] == element ) return mid;
   else if( element < A[mid] )
      RecursiveBsearch(A, start, mid-1, element);
   else
      RecursiveBsearch(A, mid+1, end, element);
}
int main() {
   int A[] = {0,2,6,11,12,18,34,45,55,99};
   int n=55;
   printf("%d is found at Index %d \n",n,RecursiveBsearch(A,0,9,n));
   return 0;
}

出力

55 is found at Index 8

  1. 長方形の面積と周囲長のためのCプログラム

    長方形の長さと幅を考えると、その面積と周囲長を見つける必要があります。 長方形は、4つの辺とそれぞれ90度の4つの角度を含む2D図形です。長方形のすべての辺が等しいわけではなく、長方形の反対側だけが等しいだけです。長方形の対角線も同じ長さです。 以下は長方形の図式表現です。 ここで、Aは長方形の幅を表し、Bは長方形の長さを表します。 エリアを見つけるには 長方形の式は次のとおりです。長さx幅 また、長方形の周囲長は− 2 x(長さ+幅) 。 例 Input: 20 30 Output: area of rectangle is : 600    peri

  2. 線形探索のためのPythonプログラム

    この記事では、線形検索とPython3.xでの実装について学習します。またはそれ以前。 アルゴリズム Start from the leftmost element of given arr[] and one by one compare element x with each element of arr[] If x matches with any of the element, return the index value. If x doesn’t match with any of elements in arr[] , return -1 or element no