|
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 34
|
|
Функция для поиска наибольшего и второго наибольшего элемента вектора17.05.2017, 16:01. Показов 7569. Ответов 58
Метки нет (Все метки)
Есть вектор который заполняется рандомно. И нужно найти два элемента - самое большое значение и второе по величине. И главным условием сделать это с линейной сложностью.
0
|
|
| 17.05.2017, 16:01 | |
|
Ответы с готовыми решениями:
58
Функция для поиска индекса наибольшего элемента Декомпозиционный алгоритм для поиска наибольшего элемента
|
|
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 34
|
||||||
| 17.05.2017, 20:10 [ТС] | ||||||
|
пробовал сделать так
но ошибка при поиске второго максимума. пример {16, 5,6,9,7,19,12,17,5} max=19 second_max = 16 он не ищет дальше макс. эта функция подходит для отсортированного массива, а без сортировки нельзя?
0
|
||||||
|
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
|
| 18.05.2017, 00:49 | |
|
Используйте алгоритм Quickselect
Добавлено через 4 минуты Хотя, зачем..
0
|
|
|
Модератор
|
|||||||||||
| 18.05.2017, 08:15 | |||||||||||
Сообщение было отмечено S_el как решение
Решение
GraK, всё уже придумано до нас - алгоритм std::max_element. Сложность линейная.
GraK, я поторопился. Надо ещё код поправить, иногда неправильно считает. Добавлено через 3 минуты GraK, вот исправленный вариант:
GraK, всё равно иногда неправильно считает. Надо ещё подумать.
0
|
|||||||||||
|
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
|
|
| 18.05.2017, 08:28 | |
|
gru74ik, у Вас находит второй максимальный после первого максимального,
а нужно, как я понял, просто второй элемент.
0
|
|
|
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
|
|
| 18.05.2017, 08:30 | |
|
0
|
|
|
Модератор
|
||||||
| 18.05.2017, 08:43 | ||||||
|
GraK, мановар, в общем, проще отсортировать вектор и вывести два последних значения:
0
|
||||||
|
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
|
|
| 18.05.2017, 08:47 | |
|
gru74ik, сложность уже не линейная, не подходит к заданию.
Опять же Вы берете последние 2 элемента, а если у нас максимальных выпало 2 или 3. Второй по значению окажется опять максимальным.
0
|
|
|
Модератор
|
|||||||
| 18.05.2017, 09:29 | |||||||
|
мановар, а если в std::set закинуть наш вектор?
Как бы ещё узнать, за какое время это всё выполняется? Добавлено через 3 минуты
0
|
|||||||
|
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
|
||||||
| 18.05.2017, 09:54 | ||||||
Сообщение было отмечено gru74ik как решение
Решение
gru74ik, а чем max_element не подходит?
Добавлено через 2 минуты
1
|
||||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 18.05.2017, 09:56 | |
|
0
|
|
|
Модератор
|
|
| 18.05.2017, 10:02 | |
|
мановар, как минимум тем, что алгоритм std::max_element вызывается дважды. Значит сложность будет O(2n), разве нет? Или это не так считается?
Плюс ещё цикл там у тебя. Это точно у тебя линейная сложность?
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 18.05.2017, 10:13 | |
|
3
|
|
|
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
|
|||
| 18.05.2017, 10:14 | |||
|
0
|
|||
|
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
|
|
| 18.05.2017, 10:28 | |
|
MrGluck, да глянул и там и тут http://ru.cppreference.com/w/c... ax_element
Эти два сайта одни из основных. Такими темпами и по англикски скоро свободно переводить начну.
0
|
|
|
Модератор
|
|||||||
| 18.05.2017, 11:44 | |||||||
Предполагается, что вектор не состоит полностью из одинаковых элементов, не пуст, и не содержит только один элемент. Иначе нужно вставить соответствующие проверки.
0
|
|||||||
| 18.05.2017, 11:44 | |
|
Помогаю со студенческими работами здесь
20
Номер наибольшего элемента и наибольшего значения среди модулей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|