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 :/
If you want to use the function std::max_element() , the way you have to do it is:
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, вот исправленный вариант:
GraK, всё равно иногда неправильно считает. Надо ещё подумать.
gru74ik, у Вас находит второй максимальный после первого максимального,
а нужно, как я понял, просто второй элемент.
GraK, мановар, в общем, проще отсортировать вектор и вывести два последних значения:gru74ik, сложность уже не линейная, не подходит к заданию.
Опять же Вы берете последние 2 элемента, а если у нас максимальных выпало 2 или 3. Второй по значению окажется опять максимальным.
Добавлено через 2 минуты
Как бы ещё узнать, за какое время это всё выполняется?
Добавлено через 3 минуты
Решение
Тесты никогда не писал, такой вариант пойдёт:
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Функция сортировки и нахождения максимального элемента массива
Написать функцию, которая принимает у пользователя массив, сортирует его и находит максимальный.
Рекурсивная функция нахождения максимального элемента в списке
Саму функцию нахождения максимального элемента написал. Мне только нужно рекурсию сделать. Заранее.
Функция нахождения минимального и максимального индекса в массиве
Никак не получается составить функцию, в качестве параметра которой принимаются 3 одномерных.
Функция для нахождения индекса максимального элемента массива
Помогите написать функцию для нахождения индекса максимального элемента массива. реализуйте функцию.
Составить рекурсивную процедуру нахождения максимального элемента в массиве
3. Составить рекурсивную процедуру нахождения максимального элемента в массиве.
Функция нахождения максимального элемента массива(ошибка при выводе)
Срочно! Помогите найти ошибку! Подозреваю,что ошибка в функции,но найти ее там я не могу.
Функция для поиска индекса наибольшего элемента
В двух мтарицах: А и B поменять местами наибольшие элементы. Для поиска идексов наибольшего.
Декомпозиционный алгоритм для поиска наибольшего элемента
Добрый день. Помогите пожалуйста разобраться с одной задачкой. Задачка из книги А.Левитина.
Составить функцию для выборки из компонент заданного вектора наибольшего элемента
Создать программ с использованием функций: Составить функцию для выборки из компонент заданного.
Составить функцию для выборки из компонент заданного вектора наибольшего элемента
Составить функцию для выборки из компонент заданного вектора a(a1,a2. an) наибольшего элемента.
но ошибка при поиске второго максимума.
пример
max=19
second_max = 16
он не ищет дальше макс. эта функция подходит для отсортированного массива, а без сортировки нельзя?
Используйте алгоритм Quickselect
Добавлено через 4 минуты
Хотя, зачем..
Решение
Добавлено через 27 секунд
нафига здесь только вектор нужен - для меня загадка.
Добавлено через 14 минут
Eva_, тоже самое без всяких векторов (и лишних операций копирования в него)
в общем - тут либо сразу с вектором работать, либо сразу с одномерным массивом - ну это если по уму делать
vantfiles, я знаком с инициализацией векторов, просто в самом задании:
нахождения максимального элемента в одномерном массивенакладывают дополнительные расходы на доп операции (в моем понимании - одномерный массив это конструкция вида int arr[], а вектор есть вектор). Но это всё просто так - придирки к заданию
Я бы написал задание либо так:
используя шаблонный класс vector, напишите функцию нахождения максимального элемента в нем
либо так
напишите функцию нахождения максимального элемента в одномерном массиве.
std::vector<int> vec(std::begin(arr), std::end(arr)); // как вариант
Решение
gru74ik, а чем max_element не подходит?
Добавлено через 2 минуты
мановар, как минимум тем, что алгоритм 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.
Читайте также: