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

C++で特定の配列内の要素を線形に検索する再帰プログラム


任意の順序で整数を含む整数配列Arr[]が与えられます。目標は、配列の再帰検索を使用して、配列に存在する入力整数値を見つけることです。

入力配列Arr[]にvalが見つからない場合は、-1を返します。 Arr[]で見つかった場合はvalのインデックスを出力します。

入力 −arr [] ={11,43,24,50,93,26,78} val =26

出力 −インデックス5で26が見つかりました

説明

Elements in the array start from index 0 to index=array length -1.
First index=0 last index=6 : 11 != 26, 78 != 26 → 0+1 , 6-1
First index=1 last index=5 : 43 != 26, 26 = 26 return 5
26 is present at index 5.

入力 − arr [] ={11,43,24,50,93,26,78} val =66

出力 −66は存在しません

説明

Elements in the array start from index 0 to index=array length -1.
First index=0 last index=6 : 11 != 66, 78 != 66 → 0+1 , 6-1
First index=1 last index=5 : 66 != 26, 66 != 26 → 1+1 , 5-1
First index=2 last index=4 : 24 != 66, 93 != 66 → 2+1 , 4-1
First index=3 last index=3 : 50 != 26, 50 != 26 → 3+1 , 3-1
First index=3 last index=2 3>2 end
66 not found.

以下のプログラムで使用されているアプローチは次のとおりです

このアプローチでは、アレイを両端から直線的にトラバースします。入力値を両端の要素と比較します。見つかった場合は、インデックスを返します。それ以外の場合は、最初のインデックス=前の最初のインデックス+1と最後のインデックス=前の最後のインデックス-1の次の要素を再帰的にチェックします。最初のインデックス>最後のインデックスの場合、要素が見つかりません。

  • 整数要素を持つ入力配列Ar[]を取ります。

  • 検索する要素をvalとして取得します。

  • 関数searchRec(int arr []、int start、int end、int num)は、配列、最初と最後のインデックス、および検索される値numを受け取り、見つかった場合はインデックスを返します。

  • 変数の結果を-99とします。

  • arr [start] ==numの場合、結果をstartとして設定します

  • arr [end] ==numの場合、結果をendとして設定します

  • if(start> end)then set result=-1。アレイ全体をトラバースしたとき

  • 結果の値が-99以外の場合は、結果を返します。それ以外の場合は、searchRec(arr、start + 1、end -1、num)を使用して再帰的に検索します

  • メインチェックの内部で戻り値を確認し、それに応じて結果を出力します

#include<bits/stdc++.h>
using namespace std;
int searchRec(int arr[], int start,int end, int num){
   int result=-99;
   if (start > end){
      result= -1;
   }
   if (arr[start] == num){
      result=start;
   }
   if (arr[end] == num){
      result=end;
   }
   if( result!=-99){
      return result;
   }
   return searchRec(arr, start + 1, end - 1, num);
}
int main(){
   int Arr[] = {11,43,22,56,33,26,78};
   int i;
   int len = sizeof(Arr) / sizeof(Arr[0]);
   int val = 56;
   int pos = searchRec(Arr, 0, len - 1, val);
   if (pos == -1){
      cout<<val<<" is not present" ;
   }
   else{
      cout<<val<<" found at index "<<pos;
   }
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます

56 found at index 3

  1. 配列の最大要素を見つけるためのC++プログラム

    配列には複数の要素が含まれており、配列内の最大の要素は他の要素よりも大きい要素です。 たとえば。 5 1 7 2 4 上記の配列では、7が最大の要素であり、インデックス2にあります。 配列の最大の要素を見つけるプログラムは次のとおりです。 例 #include <iostream> using namespace std; int main() {    int a[] = {4, 9, 1, 3, 8};    int largest, i, pos;    largest = a[0

  2. 配列内の要素を再帰的に線形検索するJavaプログラム

    この記事では、配列内の要素を再帰的に線形検索する方法を理解します。線形検索は非常に単純な検索アルゴリズムであり、すべてのアイテムを1つずつ順次検索します。 以下は同じのデモンストレーションです- 入力がであると仮定します − Input array: 14 20 35 47 50 65 72 81 90 99 Key element: 72 必要な出力は − The element 72 is present at position: 6 アルゴリズム Step 1 - START Step 2 - Declare a string array namely input_array