Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 배열의 최소(또는 최대) 요소를 찾는 프로그램

<시간/>

이 문제에서는 n개의 정수로 구성된 배열 arr[]이 제공됩니다. 우리의 임무는 C++에서 배열의 최소 및 최대 요소를 찾는 프로그램을 만드는 것입니다.

문제 설명 − 여기에 배열 arr[]이 있습니다. 은 n개의 정수 값을 포함합니다. 배열의 모든 값 중에서 최대값과 최소값을 찾아야 합니다.

문제를 이해하기 위해 예를 들어보겠습니다.

입력

arr[] = {2, 1, 6, 9, 4, 10, 15, 21}

출력

max = 21 , min = 1

솔루션 접근 방식

문제에 대한 여러 솔루션이 있을 수 있습니다.

단일 솔루션 배열의 요소를 직접 비교합니다. 이는 배열의 각 요소를 확인하고 비교를 사용하여 최대값과 최소값을 찾는 방식으로 수행됩니다.

이것은 두 가지 다른 접근 방식을 사용하여 수행할 수 있습니다.

  • 반복적 접근
  • 재귀적 접근

문제를 해결하기 위한 반복적인 접근

배열을 반복하고 배열의 각 요소를 추출하고 배열의 최대 및 최소 요소와 비교합니다.

우리 솔루션의 작동을 설명하는 프로그램

예시

#include <iostream>
using namespace std;
void getMinMax(int arr[] , int N){
   int max = arr[0], min = arr[0];
   for(int i = 1; i < N; i++){
      if(max < arr[i])
         max = arr[i];
      if(min > arr[i])
         min = arr[i];
   }
   cout<<"Maximum Value = "<<max<<"\n";
   cout<<"Minimum Value = "<<min;
}
int main(){
   int arr[] = {2, 1, 6, 9, 4, 10, 15, 21};
   int N = 8;
   getMinMax(arr, N);
   return 0;
}

출력

Maximum Value = 21
Minimum Value = 1

문제 해결을 위한 재귀적 접근

이 접근 방식에서는 배열의 모든 요소에 대해 반복해서 메서드를 재귀적으로 호출하여 배열의 모든 요소의 최대값과 최소값을 찾아 문제를 해결합니다.

우리 솔루션의 작동을 설명하는 프로그램

예시

#include <iostream>
using namespace std;
int CalcMinValue(int arr[], int n) {
   return (n == 1) ? arr[0] : min(arr[n - 1], CalcMinValue(arr, n - 1));
}
int CalcMaxValue(int arr[], int n) {
   return (n == 1) ? arr[0] : max(arr[n -1], CalcMinValue(arr, n - 1));
}
int main() {
   int arr[] = {2, 1, 6, 9, 4, 10, 15, 21};
   int N = 8;
   cout<<"Maximum Value = "<<CalcMaxValue(arr, N)<<endl;
   cout<<"Minimum Value = "<<CalcMinValue(arr, N);
   return 0;
}

출력

Maximum Value = 21
Minimum Value = 1

이 문제는 C++ 프로그래밍 언어의 표준 템플릿 라이브러리에서 제공하는 인빌드 함수를 사용하여 해결할 수도 있습니다.

솔루션을 찾는 방법은 min_element() 및 max_element()이며 이러한 방법은 C++의 bits/stdc++.h 라이브러리에 있습니다.

문제 해결을 설명하는 프로그램

예시

#include <bits/stdc++.h>
using namespace std;
int main() {
   int arr[] = {2, 1, 6, 9, 4, 10, 15, 21};
   int N = 8;
   cout<<"Maximum Value = "<<(*max_element(arr, arr+N))<<endl;
   cout<<"Minimum Value = "<<(*min_element(arr, arr+N));
   return 0;
}

출력

Maximum Value = 21
Minimum Value = 1