Vector максимальный элемент

Обновлено: 04.07.2024

Функция нахождения максимального элемента массива
Разработать функцию нахождения максимального элемента массива и применить ее для двух массивов .

Шаблон нахождения максимального элемента в массиве
Доброго всем дня.. В общем проблема. Ничерта не могу понять в шаблонах (С++). Суть задания -.

Рекурсифная функция нахождения максимального элемента массива
Нужно найти максимальный элемент в массиве, в принципе все просто, только как написать тоже самое.

10 Answers 10

Using C++11/C++0x compile flags, you can

Otherwise, write your own:

Oh, and use std::minmax_element(. ) if you need both at once :/


29k 21 21 gold badges 96 96 silver badges 124 124 bronze badges 335k 45 45 gold badges 422 422 silver badges 581 581 bronze badges Hi, do you know is it possible to apply it to dimension array or vector? Yes you can. The standard library algorithms have been designed to generically work on iterators. Pointers are iterators too.

If you want to use the function std::max_element() , the way you have to do it is:


29k 21 21 gold badges 96 96 silver badges 124 124 bronze badges


3,489 3 3 gold badges 20 20 silver badges 30 30 bronze badges I guess you have assumed input to be vector<double> or does *max_element() by default return double val.

If the vector is sorted in ascending or descending order then you can find it with complexity O(1).

For a vector of ascending order the first element is the smallest element, you can get it by v[0] (0 based indexing) and last element is the largest element, you can get it by v[sizeOfVector-1].

If the vector is sorted in descending order then the last element is the smallest element,you can get it by v[sizeOfVector-1] and first element is the largest element, you can get it by v[0].

If the vector is not sorted then you have to iterate over the vector to get the smallest/largest element.In this case time complexity is O(n), here n is the size of vector.

You can use iterator,

You can calculate it in input section (when you have to find smallest or largest element from a given vector)

Also you can get smallest/largest element by built in functions

You can get smallest/largest element of any range by using this functions. such as,

I have used asterisk (*), before min_element()/max_element() functions. Because both of them return iterator. All codes are in c++.

Решение

GraK, всё уже придумано до нас - алгоритм std::max_element. Сложность линейная.

Добавлено через 3 минуты
GraK, вот исправленный вариант:

Добавлено через 15 минут
GraK, всё равно иногда неправильно считает. Надо ещё подумать.

gru74ik, у Вас находит второй максимальный после первого максимального,

а нужно, как я понял, просто второй элемент.

GraK, мановар, в общем, проще отсортировать вектор и вывести два последних значения:
gru74ik, сложность уже не линейная, не подходит к заданию.
Опять же Вы берете последние 2 элемента, а если у нас максимальных выпало 2 или 3. Второй по значению окажется опять максимальным.

Добавлено через 2 минуты
Как бы ещё узнать, за какое время это всё выполняется?

Добавлено через 3 минуты

GraK, линейной или меньше? Или именно с линейной? То есть, если за время, меньше, чем линейное выполняется, то уже не годится? мановар, мда, тоже не подойдёт. Сложность создания сета из несортированного вектора больше, чем линейная:

Решение

Тесты никогда не писал, такой вариант пойдёт:

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Функция сортировки и нахождения максимального элемента массива
Написать функцию, которая принимает у пользователя массив, сортирует его и находит максимальный.

Рекурсивная функция нахождения максимального элемента в списке
Саму функцию нахождения максимального элемента написал. Мне только нужно рекурсию сделать. Заранее.


Функция нахождения минимального и максимального индекса в массиве
Никак не получается составить функцию, в качестве параметра которой принимаются 3 одномерных.


Функция для нахождения индекса максимального элемента массива
Помогите написать функцию для нахождения индекса максимального элемента массива. реализуйте функцию.


Составить рекурсивную процедуру нахождения максимального элемента в массиве
3. Составить рекурсивную процедуру нахождения максимального элемента в массиве.


Функция нахождения максимального элемента массива(ошибка при выводе)
Срочно! Помогите найти ошибку! Подозреваю,что ошибка в функции,но найти ее там я не могу.

Функция для поиска индекса наибольшего элемента
В двух мтарицах: А и B поменять местами наибольшие элементы. Для поиска идексов наибольшего.

Декомпозиционный алгоритм для поиска наибольшего элемента
Добрый день. Помогите пожалуйста разобраться с одной задачкой. Задачка из книги А.Левитина.


Составить функцию для выборки из компонент заданного вектора наибольшего элемента
Создать программ с использованием функций: Составить функцию для выборки из компонент заданного.


Составить функцию для выборки из компонент заданного вектора наибольшего элемента
Составить функцию для выборки из компонент заданного вектора a(a1,a2. an) наибольшего элемента.

Так хоть 22 пробежки по контейнеру - это все равно линейная сложность


но ошибка при поиске второго максимума.
пример
max=19
second_max = 16
он не ищет дальше макс. эта функция подходит для отсортированного массива, а без сортировки нельзя?

Ну, сортировку в линейную сложность не уместишь, теоретический минимум n*log(n). Да и с сортировкой любой дурак решит. Значит, можно без сортировки

Используйте алгоритм Quickselect

Добавлено через 4 минуты
Хотя, зачем..

Решение

Добавлено через 27 секунд
нафига здесь только вектор нужен - для меня загадка.

Добавлено через 14 минут
Eva_, тоже самое без всяких векторов (и лишних операций копирования в него)

Добавлено через 1 минуту
в общем - тут либо сразу с вектором работать, либо сразу с одномерным массивом - ну это если по уму делать

vantfiles, я знаком с инициализацией векторов, просто в самом задании:

нахождения максимального элемента в одномерном массиве

накладывают дополнительные расходы на доп операции (в моем понимании - одномерный массив это конструкция вида int arr[], а вектор есть вектор). Но это всё просто так - придирки к заданию

Я бы написал задание либо так:
используя шаблонный класс vector, напишите функцию нахождения максимального элемента в нем

либо так
напишите функцию нахождения максимального элемента в одномерном массиве.

std::vector<int> vec(std::begin(arr), std::end(arr)); // как вариант

Решение

gru74ik, а чем max_element не подходит?

Добавлено через 2 минуты

Так хоть 22 пробежки по контейнеру - это все равно линейная сложность

мановар, как минимум тем, что алгоритм std::max_element вызывается дважды. Значит сложность будет O(2n), разве нет? Или это не так считается?

Плюс ещё цикл там у тебя. Это точно у тебя линейная сложность?

вызывается дважды. Значит сложность будет O(2n), разве нет? 2N всё равно линейная, константные коэффициенты отбрасываются Значит сложность будет O(2n), разве нет? Или это не так считается? gru74ik, не знаю (я самообучающийся, до сложностей алгоритмов еще не добрался), думал Вы подскажите.
Плюс ещё цикл там у тебя. Это точно у тебя линейная сложность? Да вроде ничего навороченного, идем по порядку. Хотя ведь в самом алгоритме max_element заложены циклы и сравнения. мановар, если что асимптотическая сложность можно глянуть тут, в конце описания алгоритма/метода контейнера
Например, для max_element
Complexity
Linear in one less than the number of elements compared. 2N всё равно линейная, константные коэффициенты отбрасываются Добавлено через 3 минуты
Предполагается, что вектор не состоит полностью из одинаковых элементов, не пуст, и не содержит только один элемент. Иначе нужно вставить соответствующие проверки.

Помощь в написании контрольных, курсовых и дипломных работ здесь.


Написать программу с функцией для поиска экстремального (наибольшего или наименьшего) элемента массива
Написать программу с функцией для поиска экстремального (наибольшего или наименьшего) элемента.


Произведение наименьшего элемента вектора Х и наибольшего элемента вектора Y.
Произведение наименьшего элемента вектора Х и наибольшего элемента вектора Y. размер векторов x и.


Произведение наименьшего элемента вектора Х и наибольшего элемента вектора Y
Произведение наименьшего элемента вектора Х и наибольшего элемента вектора Y. Добавлено через 26.

Номер наибольшего элемента и наибольшего значения среди модулей
Здравствуйте, помогите пожалуйста с программой. Нужно найти в одномерном массиве А номер.

Я решаю проблему в которой в какой то момент нужно взять элемент с максимальным значением в векторе(или в отрезке вектора) я нашел функцию max_element но оно работает медленно мне нужно чтоб я указывал аргументы как в max_element там указывается так - max_element(vectorname.begin(), vectorname.end())


Ну тогда делайте свой тип и храните отдельно значение максимального элемента и обновляйте при вставке. В неотсортированном массиве лучше O(N) ничего не получится. Так что используйте какую-то другую структуру данных.

А вообще лучше задавать вопрос с общей проблемой - а то это может оказаться вопросом, какой рукой держать микроскоп, забивая гвозди, а не как забить гвоздь.

How can I get the maximum or minimum value in a vector in C++?

And am I wrong in assuming it would be more or less the same with an array?

I need an iterator, right? I tried it with max_element , but I kept getting an error.


2,654 7 7 gold badges 21 21 silver badges 47 47 bronze badges 1,635 3 3 gold badges 13 13 silver badges 6 6 bronze badges Some more code might be useful as well. Where is the definition of cloud? @bobblob: and yet the compiler error you posted said that "cloud is of non-class type int[10] ". How can it be a vector then?

Читайте также: