Найти минимум в массиве используя наиболее оптимальный алгоритм03.08.2016, 22:30. Показов 15333. Ответов 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 объектов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|