在 C++ 中查找数组中最大的三个元素
在这个问题中,我们给定了一个包含 N 个无序元素的 arr[]。我们的任务是 *查找数组中最大的三个元素*。
让我们举个例子来理解这个问题,
Input : arr[] = {7, 3, 9, 12, 1}
Output : 12, 9, 7解决方案方法
我们基本上需要找到数组中三个最大的元素并打印出来。这可以通过多种方式完成,
方法 1
对于最大的三个元素,我们将创建三个元素来保存它们的值,*max、max2 和 max3*,并将这些值设置为 arr[0]。
然后我们将循环从 i -> 1 到 n-1,对于每个元素
如果 (arr[i] > max) -> max3 = max2,max2 = max,max = arr[i]。
否则如果 (arr[i] > max2) -> max3 = max2,max2 = arr[i]。
否则如果 (arr[i] > max3) -> max3 = arr[i]。
在循环结束时,我们将打印所有三个值。
示例
程序说明我们解决方案的工作原理
#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** - 使用排序技术对数组进行排序。
**步骤 2** - 打印前三个元素: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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP