C++程序 在数组中查找最大元素
给定一个大小为 N 的数组 arr ,任务是查找给定数组中的最大元素。
示例:
输入: arr[]={10,20,4} 输出: 20
输入: arr[]={20,10,20,4,100} 输出: 100
方法1 – 线性遍历:
解决这个问题的最简单、最基本的方法之一是简单地遍历整个列表并找到其中的最大值。
按照以下步骤实现此想法:
- 创建一个局部变量 max 以存储列表中的最大值
- 最初将max初始化为第一个元素 ,以开始比较。
- 然后 从第二个元素开始遍历 给定的数组,对于每个元素:
- 将当前元素与max比较
- 如果当前元素大于max,则 将max 的值替换为当前元素。
- 最后, 返回 并打印存储在 max 中的数组中最大元素的值。
以下是上述方法的实现:
// C++ program to find maximum
// in arr[] of size n
#include <bits/stdc++.h>
using namespace std;
int largest(int arr[], int n)
{
int i;
// Initialize maximum element
int max = arr[0];
// Traverse array elements
// from second and compare
// every element with current max
for (i = 1; i < n; i++)
if (arr[i] > max)
max = arr[i];
return max;
}
// Driver Code
int main()
{
int arr[] = {10, 324, 45, 90, 9808};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Largest in given array is " <<
largest(arr, n);
return 0;
}
// This Code is contributed by Shivi_Aggarwal```
输出:
Largest in given array is 9808
时间复杂度: O(N),完全遍历数组。 辅助空间: O(1),只创建一个额外的变量,它将占用O(1)空间。
方法2:使用库函数:
大多数语言都有相关的 max() 类型内置函数来查找最大元素,例如C ++中的 std::max_element 。我们可以使用这个函数直接找到最大元素。
以下是上述方法的实现:
//上述方法的C++实现
# include <bits/stdc++.h>
using namespace std;
//使用递归函数找到最大元素
int largest(int *arr , int n , int i)
{
//基本情况
if (i == n-1) // 如果我们到达数组的最后一个元素
{ // 返回该索引的值
return arr[i];
}
// 递归调用以查找最大元素
return max( arr[i] ,largest( arr , n , i+1) );
//它会返回arr[i]和arr[i+1]到arr[n-1]的最大值
}
// 主函数
int main()
{
int arr[] = {10, 324, 45, 90, 9808};
int n = sizeof(arr)/sizeof(arr[0]);
// 调用函数
cout << largest(arr, n , 0);
return 0;
}
// 此方法由 nikhilsainiofficial546 贡献```
输出
9808
时间复杂度: O(N)
辅助空间: 由于递归调用,所以为 O(N)