Найти минимум в массиве используя наиболее оптимальный алгоритм03.08.2016, 22:30. Показов 15490. Ответов 186
Метки нет (Все метки)
Дан массив чисел, надо найти минимум. Препод сказал - дополнительное задание: предложить наиболее оптимальный алгоритм, написать код, реализующий его идею, и обосновать его теоретически.
4
|
|
| 03.08.2016, 22:30 | |
|
Ответы с готовыми решениями:
186
Используя Linq найти минимум и максимум в массиве.
|
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
| 05.08.2016, 19:12 | |
|
ValeryS, очень жизненный пример, в котором надо искать мин/макс в цикле, а статистику ты неправильно посчитал
0
|
|
|
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
|
|
| 05.08.2016, 19:20 | |
|
Да, оказалось, что в среднем одинаковое количество сравнений. Различия имеют в худшем случае.
Добавлено через 4 минуты ct0r, я более тщательно посчитал мат. ожидание количества сравнений, нежели ValeryS, но действительно получил 3 сравнения на пару в среднем.
2
|
|
|
Комп_Оратор)
|
||||||
| 05.08.2016, 19:55 | ||||||
|
HenryDukart, мне Ваш алгоритм нравится. Я вот тут как смог написал два варианта сортировки с алгоритмом предложенным Вами (если я правильно его понял и не переусложнил) и алгоритмом простого
else то есть в сортировке с выбором не пары но или-или. Количество итераций вдоль одинаково, а вот количество сравнений в моём случае более чем вдвое меньше. Счетчики тупо фиксируют ветвь после сравнения и нет нужды вычислять сколько сравнений на сравнение получается вдоль ветвей потока исполнения.
0
|
||||||
|
|
||
| 05.08.2016, 19:57 | ||
|
1
|
||
|
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
|
|||
| 05.08.2016, 21:45 | |||
|
HighPredator, этот алгоритм я видел в Кормэн "Алгоритмы: построение и анализ". Действительно сравнений 3*(n/2), потому что для обработки одной пары используется три сравнения. Сейчас я думаю, можно ли применить способ IGPIGP, для уменьшения числа сравнений.
Добавлено через 36 минут Добавлено через 17 минут
1
|
|||
|
Комп_Оратор)
|
|||
| 05.08.2016, 22:22 | |||
![]() Добавлено через 28 минут
0
|
|||
|
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
|
|
| 05.08.2016, 22:29 | |
|
1
|
|
| 05.08.2016, 22:51 | ||||||
|
Вот
Решил повелосипедить, и что из этого получилось...
число сравнений: n плюс/минус 1
0
|
||||||
|
Комп_Оратор)
|
||
| 05.08.2016, 23:22 | ||
![]() Посмотрим. А моя работает. Тут что-то с итерацией по 2. Я это вижу. В конце она запросто может не сойтись и следовательно нужны ещё сравнения. А их и так у Вашего Варианта многовато. HenryDukart, Вы на чьей стороне? На моей или
0
|
||
|
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
|
|||||
| 05.08.2016, 23:40 | |||||
|
1
|
|||||
|
Комп_Оратор)
|
|||
| 06.08.2016, 00:39 | |||
0
|
|||
|
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
|
|||||||
| 06.08.2016, 00:43 | |||||||
|
IGPIGP, происходит неправильный подсчет числа сравнений. Счетчик увеличивается, только если результат истина. А то я смотрю, что маловато сравнений.
Добавлено через 3 минуты
0
|
|||||||
|
Комп_Оратор)
|
|||||||
| 06.08.2016, 00:44 | |||||||
0
|
|||||||
|
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
|
|
| 06.08.2016, 00:45 | |
|
IGPIGP, просто перед if увеличить счетчик.
0
|
|
|
Комп_Оратор)
|
|||
| 06.08.2016, 00:54 | |||
ar[i] > ar[i+1] в той ветке else. Eсли равно надо и для минимума и для максимума с одним и тем же индексом работать. ![]() Добавлено через 3 минуты - Ты знал! - Ты знал! ![]() Всё, - спать-спать-спать. До завтра, HenryDukart, рад был пообщаться.
0
|
|||
|
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
|
||||||
| 06.08.2016, 02:16 | ||||||
|
IGPIGP, спокойной ночи. И мне было приятно.
Добавлено через 49 минут IGPIGP, заметил ошибочку в алгоритме сортировки. На входном массиве {2, 1} перед обменом значений в конце цикла do { } while переменные min_val_ind и max_val_ind будут обе указывать на единицу. Результат же будет верный. В общем случае же может оказаться ситуация, что после первой перестановки индекс максимального элемента будет неверным. Пример: {2, 0, 0, 1}. Результат сортировки: {0, 0, 2, 1}; Добавлено через 26 минут
1
|
||||||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||
| 06.08.2016, 07:55 | ||
![]() Кстати в STL есть такой алгоритм - minmax_element. Причем вначале предлагалось сделать ограничение на худший случай максимум 2n-2 сравнений: http://citeseerx.ist.psu.edu/v... 1&type=pdf Но потом видимо посчитали, что это дает право на неэффективную реализацию, и ужесточили требование до (3/2)(n-1), фактически заставив этим реализовывать попарный алгоритм. http://www.open-std.org/jtc1/s... 5.html#715
1
|
||
|
Объявлятель переменных
1225 / 411 / 321
Регистрация: 24.09.2011
Сообщений: 1,279
|
||||||
| 06.08.2016, 08:53 | ||||||
|
Конструёвина.
0
|
||||||
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|||||||||||||
| 06.08.2016, 09:02 | |||||||||||||
|
На счет начальной задачи
Но "препод" сказал, что "можно быстрее". Действительно, быстрее можно, если не просчитывать размер массива в каждой итерации, а найти его до цикла, например так:
По поводу одновременного поиска минимального и максимального значений. О чём Вы всю ночь рассуждали? Единственный, способ оптимизации состоит в том, что не нужно max сравнивать с теми значениями, которые оказались меньше, чем min. Например, так:
Количество сравнений зависит от расположения элементов в массиве. Так, для массива 1,2,3,4,5 имеем всего 5 сравнений (включая два сравнения до цикла) А для массива 5,4,3,2,1 имеем уже 8 сравнений. Или я не прав?
0
|
|||||||||||||
| 06.08.2016, 09:02 | |
|
Используя EXTREMUM найти все опорные планы и оптимальный план Нарисовать статичную картинку, используя минимум 5 цветов, минимум 30 объектов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|