Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình tìm phần tử tối thiểu (hoặc tối đa) của một mảng trong C ++

Trong bài toán này, chúng ta được cung cấp một mảng arr [] gồm n số nguyên. Nhiệm vụ của chúng ta là tạo một chương trình để tìm phần tử tối thiểu và tối đa của một mảng trongC ++.

Mô tả sự cố - Ở đây, chúng ta có một mảng arr []. Chứa n giá trị nguyên. Chúng ta phải tìm giá trị lớn nhất và giá trị nhỏ nhất trong số tất cả các giá trị của mảng.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

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

Đầu ra

max = 21 , min = 1

Phương pháp tiếp cận giải pháp

Có thể có nhiều giải pháp cho vấn đề,

Một giải pháp sẽ là so sánh trực tiếp các phần tử của mảng. Điều này được thực hiện bằng cách kiểm tra xem từng phần tử của mảng và sau đó tìm giá trị lớn nhất và tối thiểu bằng cách sử dụng so sánh.

Điều này có thể được thực hiện bằng hai cách tiếp cận khác nhau,

  • Phương pháp tiếp cận lặp lại
  • Phương pháp tiếp cận đệ quy

Cách tiếp cận lặp đi lặp lại để giải quyết vấn đề,

Chúng tôi sẽ lặp lại cho mảng, trích xuất từng phần tử của mảng và so sánh nó với phần tử tối đa và tối thiểu của mảng.

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#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;
}

Đầu ra

Maximum Value = 21
Minimum Value = 1

Phương pháp đệ quy để giải quyết vấn đề,

Trong cách tiếp cận này, chúng ta sẽ giải quyết vấn đề bằng cách tìm tối đa và tối thiểu của tất cả các phần tử của mảng bằng cách gọi lại một cách đệ quy phương thức cho tất cả các phần tử của mảng.

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#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;
}

Đầu ra

Maximum Value = 21
Minimum Value = 1

Vấn đề này cũng có thể được giải quyết bằng cách sử dụng các hàm inbuild được cung cấp trong thư viện mẫu chuẩn của ngôn ngữ lập trình C ++.

Các phương thức để tìm ra giải pháp là min_element () và max_element () và các phương thức này được tìm thấy trong thư viện bits / stdc ++. H trong C ++.

Chương trình minh họa giải pháp cho vấn đề,

Ví dụ

#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;
}

Đầu ra

Maximum Value = 21
Minimum Value = 1