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
广告