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

C++で配列内の最大の3つの要素を検索します


この問題では、N個のソートされていない要素で構成されるarr[]が与えられます。私たちのタスクは、配列内の最大の3つの要素を見つけることです。 。

問題を理解するために例を見てみましょう

Input : arr[] = {7, 3, 9, 12, 1}
Output : 12, 9, 7

ソリューションアプローチ

基本的に、配列の最大の3つの要素を見つけて、それらを出力する必要があります。これは複数の方法で実行できます

方法1

最大の3つの要素について、それらの値を保持する3つの要素、 max、max2、およびmax3 を作成します。 これらの値をarr[0]に設定します。

次に、フォームi-> 1からn-1に、要素ごとにループします

if(arr [i]> max)-> max3 =max2、max2 =max、max =arr[i]。

else if(arr [i]> max2)-> max3 =max2、max2 =arr[i]。

else if(arr [i]> max3)-> max3 =arr[i]。

ループの最後に、3つの値すべてを出力します。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
void findThreeLargestElements(int arr[], int arr_size){
   int max, max2, max3;
   max3 = max = max2 = arr[0];
   for(int i = 0; i < arr_size; i++){
      if (arr[i] > max){
         max3 = max2;
         max2 = max;
         max = arr[i];
      }
      else if (arr[i] > max2){
         max3 = max2;
         max2 = arr[i];
      }
      else if (arr[i] > max3)
         max3 = arr[i];
   }
   cout<<endl<<"Three largest elements of the array are "<<max<<", "<<max2<<", "<<max3;
}
int main(){
   int arr[] = {15, 2, 7, 86, 0, 21, 50};
   int n = sizeof(arr) / sizeof(arr[0]); 
   cout<<"The array is : ";
   for(int i = 0; i < n; i++) 
      cout<<arr[i]<<"\t"; 
   findThreeLargestElements(arr, n);
   return 0;
}

出力

The array is : 15 2 7 86 0 21 50 Three largest elements of the array are 86, 50, 21

方法2

この問題を解決するもう1つの方法は、配列を並べ替えてから、配列の最初の3つの要素(最大の3つの要素)を出力することです。

アルゴリズム

ステップ1 −並べ替え手法を使用して配列を並べ替えます。

ステップ2 −最初の3つの要素を出力します:arr [0]、arr [1]、arr [2]

ソリューションの動作を説明するプログラム

#include <bits/stdc++.h>
using namespace std;
void findThreeLargestElements(int arr[], int n){
   sort(arr, arr + n, std::greater<>());
   int j = 0;
   cout<<"\nThree largest elements are ";
   for(int i = 0; i < n; i++){ 
      if(arr[i] != arr[i+1]){ 
         cout<<arr[i]<<" "; 
         j++;
      }
      if(j == 3){
         break;
      }
   }
}
int main(){
   int arr[] = {15, 2, 7, 86, 0, 21, 50, 53, 50};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The array is : ";
   for(int i = 0; i < n; i++)
      cout<<arr[i]<<"\t";
   findThreeLargestElements(arr, n);
   return 0;
}

出力

The array is : 15 2 7 86 0 21 50 53 50
Three largest elements are 86 53 50

  1. C ++で配列内の最初、2番目、3番目の最小要素を検索します

    n個の要素の配列があるとします。配列内の1番目、2番目、3番目の最小要素を見つける必要があります。最初の最小値はアレイの最小値であり、2番目の最小値は最小ですが最初の最小値よりも大きく、同様に3番目の最小値は最小ですが2番目の最小値よりも大きくなります。 各要素をスキャンしてから要素を確認し、この問題を解決するために1番目、2番目、3番目の最小要素の条件を関連付けます。 例 #include<iostream> using namespace std; int getThreeMins(int arr[], int n) {    int first = IN

  2. 配列の最大要素を見つけるための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