I am trying to find the ‘biggest’ element in a user made array ,by using the max function from the algorithm library/header.
I have done some research on the cplusplus reference site but there I only saw how to compare two elements using the max function. Instead I am trying to display the maximum number using a function ‘max’ ,without having to make a ‘for’ loop to find it.
For example:
Array: array[]={0,1,2,3,5000,5,6,7,8,9}
Highest value: 5000
I have made this code but it gives me a bunch of errors, which can be the issue?
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int array[11];
int n = 10;
for (int i = 0; i < n; i++) {
array[i] = i;
}
array[5] = 5000;
max(array , array + n);
for (int i = 0; i < n; i++)
cout << array[i] << " ";
return 0;
}
Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
Given an array, write functions to find the minimum and maximum elements in it.
Example:
C++
#include <bits/stdc++.h>
using
namespace
std;
int
getMin(
int
arr[],
int
n)
{
int
res = arr[0];
for
(
int
i = 1; i < n; i++)
res = min(res, arr[i]);
return
res;
}
int
getMax(
int
arr[],
int
n)
{
int
res = arr[0];
for
(
int
i = 1; i < n; i++)
res = max(res, arr[i]);
return
res;
}
int
main()
{
int
arr[] = { 12, 1234, 45, 67, 1 };
int
n =
sizeof
(arr) /
sizeof
(arr[0]);
cout <<
"Minimum element of array: "
<< getMin(arr, n)
<<
" "
;
cout <<
"Maximum element of array: "
<< getMax(arr, n);
return
0;
}
Output:
Minimum element of array: 1 Maximum element of array: 1234
Time Complexity: O(n)
Auxiliary Space: O(1), as no extra space is used
Recursive Solution
Example:
C++
#include <bits/stdc++.h>
using
namespace
std;
int
getMin(
int
arr[],
int
n)
{
return
(n == 1) ? arr[0] : min(arr[0],
getMin(arr + 1, n - 1));
}
int
getMax(
int
arr[],
int
n)
{
return
(n == 1) ? arr[0] : max(arr[0],
getMax(arr + 1, n - 1));
}
int
main()
{
int
arr[] = { 12, 1234, 45, 67, 1 };
int
n =
sizeof
(arr) /
sizeof
(arr[0]);
cout <<
"Minimum element of array: "
<<
getMin(arr, n) <<
" "
;
cout <<
"Maximum element of array: "
<<
getMax(arr, n);
return
0;
}
Output:
Min of array: 1 Max of array: 1234
Time Complexity: O(n)
Auxiliary Space: O(n), as implicit stack is used due to recursion
Using Library functions:
We can use min_element() and max_element() to find minimum and maximum of array.
Example:
C++
#include <bits/stdc++.h>
using
namespace
std;
int
getMin(
int
arr[],
int
n)
{
return
*min_element(arr, arr + n);
}
int
getMax(
int
arr[],
int
n)
{
return
*max_element(arr, arr + n);
}
int
main()
{
int
arr[] = { 12, 1234, 45, 67, 1 };
int
n =
sizeof
(arr) /
sizeof
(arr[0]);
cout <<
"Minimum element of array: "
<< getMin(arr, n) <<
" "
;
cout <<
"Maximum element of array: "
<< getMax(arr, n);
return
0;
}
Output:
Minimum element of array: 1 Maximum element of array: 1234
Time Complexity: O(n)
Auxiliary Space: O(1), as no extra space is used
Please write comments if you find anything incorrect, or if you want to share more information about the topic discussed above.
Last Updated :
17 Jan, 2023
Like Article
Save Article
В этом посте мы обсудим, как найти минимальный и максимальный элемент массива в C++.
1. Наивное решение
Наивное решение — написать собственную процедуру для этой простой задачи. Идея состоит в том, чтобы линейно пройти массив, используя простой цикл for или цикл for на основе диапазона. Затем для каждого обнаруженного элемента мы сравниваем его с минимальным или максимальным элементом, найденным до сих пор, и заменяем максимальный элемент, найденный до сих пор, текущим элементом, если он меньше по значению, и минимальный элемент, найденный до сих пор, текущим элементом, если он больше по стоимости.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <iostream> #include <climits> #include <algorithm> using namespace std; int main() { int arr[] = { 4, 2, 1, 6, —8, 5 }; int min = INT_MAX, max = INT_MIN; for (int i: arr) { if (i < min) { min = i; } if (i > max) { max = i; } } std::cout << «The min element is « << min << std::endl; std::cout << «The max element is « << max << std::endl; return 0; } |
Скачать Выполнить код
результат:
The min element is -8
The max element is 6
2. Использование minmax_element()
функция
Рекомендуемое решение — использовать std::minmax_element
найти наименьший и наибольший элементы массива. Он возвращает пару итераторов, первое значение которых указывает на минимальный элемент, а второе значение указывает на максимальный элемент. Он определен в <algorithm>
заголовок.
#include <iostream> #include <algorithm> using namespace std; int main() { int arr[] = { 4, 2, 1, 6, —8, 5 }; std::pair<int*, int*> minmax = std::minmax_element(std::begin(arr), std::end(arr)); std::cout << «The min element is « << *(minmax.first) << std::endl; std::cout << «The max element is « << *(minmax.second) << std::endl; return 0; } |
Скачать Выполнить код
результат:
The min element is -8
The max element is 6
3. Использование min_element()
с max_element()
функция
Стандартная библиотека C++ также предоставляет отдельные функции. min_element()
а также max_element()
чтобы найти наименьший и наибольший элементы в массиве соответственно.
#include <iostream> #include <algorithm> using namespace std; int main() { int arr[] = { 4, 2, 1, 6, —8, 5 }; int *min = std::min_element(std::begin(arr), std::end(arr)); int *max = std::max_element(std::begin(arr), std::end(arr)); std::cout << «The min element is « << *min << std::endl; std::cout << «The max element is « << *max << std::endl; return 0; } |
Скачать Выполнить код
результат:
The min element is -8
The max element is 6
Вот и все, что касается нахождения минимального и максимального значений в массиве в C++.
0 / 0 / 0 Регистрация: 26.10.2010 Сообщений: 19 |
|
1 |
|
Функция нахождения максимального элемента массива26.10.2010, 14:46. Показов 44659. Ответов 6
Разработать функцию нахождения максимального элемента массива и применить ее для двух массивов разной длины.
0 |
2347 / 1720 / 148 Регистрация: 06.03.2009 Сообщений: 3,675 |
|
26.10.2010, 15:16 |
2 |
Вы думаете ваша задача очень оригинальна? Тема обсуждалась не раз. Пользуйтесь поиском по форуму.
0 |
MILAN 899 / 793 / 186 Регистрация: 21.02.2009 Сообщений: 1,722 |
||||
26.10.2010, 17:32 |
3 |
|||
1 |
ForEveR В астрале 8048 / 4805 / 655 Регистрация: 24.06.2010 Сообщений: 10,562 |
||||
26.10.2010, 17:37 |
4 |
|||
0 |
papochka 33 / 33 / 0 Регистрация: 14.11.2009 Сообщений: 137 |
||||||||
26.10.2010, 18:19 |
5 |
|||||||
а не так?
?
1 |
В астрале 8048 / 4805 / 655 Регистрация: 24.06.2010 Сообщений: 10,562 |
|
26.10.2010, 18:25 |
6 |
papochka, Ага. Не заметил.
0 |
0 / 0 / 0 Регистрация: 26.10.2010 Сообщений: 19 |
|
28.10.2010, 20:09 [ТС] |
7 |
Всем большое спасибо, буду разбираться
0 |
Нахождение максимального элемента массива
Из этой небольшой заметки вы узнаете, как найти максимальный элемент массива с помощью языка c#
Вообще данную задачу можно решить множеством различных способов, так например, для нахождения максимального элемента массива мы можем использовать обычную сортировку, например, воспользуемся статическим методом Sort класса Array:
Код:
int [] ar = {67,34,3,8,35,23};
Array.Sort(ar);
int maxValue = ar[ar.Length-1];
//Результат: 67
Либо та же сортировка, но только в результате максимальный элемент будет самым первым, например:
Код:
int [] ar = { -1, -5, 0, 108, 34, 35, 21 };
int maxValue = ar.OrderByDescending(x => x).First();
//Результат: 108
Также в языке c# существует очень простой и компактный способ, который позволяет быстро найти максимальный элемент в массиве, для этого всего лишь нужно воспользоваться методом расширения Max, например:
Код:
int [] ar = {67,34,3,8,35,23};
int maxValue = ar.Max<int>();
//Результат: 67
Для многомерного массива:
Код:
int [,] numbers = {{270, 3, 62, 91, 2, 178},{22, 32, 65, 69, 8, 6}};
int maxValue = numbers.Cast<int>().Max();
//Результат: 270
Для jagged массива:
Код:
int [][] numbers = { new int [] {177,130,50,7,9},
new int [] {37,41,6,94},
new int [] {112,22,77,55}};
int maxValue = numbers.SelectMany(y => y).Max();
//Результат: 177
Читайте также:
- Как изменить данные в файле манифест
- C# Как переименовать файл?
- Mysql метод ExecuteScalar