Найти минимум в массиве используя наиболее оптимальный алгоритм03.08.2016, 22:30. Показов 15324. Ответов 186
Метки нет (Все метки)
Дан массив чисел, надо найти минимум. Препод сказал - дополнительное задание: предложить наиболее оптимальный алгоритм, написать код, реализующий его идею, и обосновать его теоретически.
4
|
|
| 03.08.2016, 22:30 | |
|
Ответы с готовыми решениями:
186
Используя Linq найти минимум и максимум в массиве.
|
|
Любитель чаепитий
|
|
| 08.08.2016, 09:52 | |
|
Ferrari F1, Потому что затратит время на "создание" этих самых потоков. Ну, в моем случае, просто затратит время на осознание того, что их создать нельзя и надо их эмулировать или как там на самом деле это делается.
0
|
|
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
||
| 08.08.2016, 10:06 | ||
|
давай рассмотрим твой вариант по 2 элемента и массив на 128 элементов(считать удобней ), допустим есть 100 процессоров значит все потоки выполняются параллельно,первый проход 64 потока, дополнительный массив 64 элементов второй проход 32 потоков, доп массив 32 элемента третий проход 16 потоков, доп массив 16 элементов четвертый проход 8 потоков, доп массив 8 элементов пятый проход 4 потока, доп массив 4 элемента шестой проход 2 потока, доп массив 2 седьмой проход 1 поток, выход вроде бы всего 7 сравнений но нужна дополнительная память, а это расходы на обслуживания памяти, в отличии от однопоточного где работа скорее всего будет вестись с регистрами плюс обслуживание потоков я как то разворачивал цикл от 2 до 128,, здесь же была задачка, так вот,после какого то числа, скорость исполнения резко падала, поскольку результаты заносились в ОЗУ а не в регистры в общем пробовать надо и универсального решения нет поскольку от сложности O(N) никуда не уйдешь
1
|
||
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
||
| 08.08.2016, 10:06 | ||
Этот код мало того, что не cache friendly ( т.к. постоянно приходится обращаться к разным частям массива), так и, как я уже говорил, попытки распараллелить алгоритм будут в целом бесполезными. Очевидно же, что на процессор нагрузка минимальная ( парочка арифметических операций ), а основная нагрузка здесь будет на шину памяти ( которая, как правило, одна для всех ядер ).
2
|
||
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
||
| 08.08.2016, 11:23 | ||
|
Можно ли ускорить поиск наименьшего элемента массива в миллион раз раз? Можно, если использовать миллион компьютеров! Разбиваем массив на миллион частей. И одновременно выполняем: на первом компьютере - поиск в первой части массива, на втором - во второй части (если она есть) и т.д. на последнем - находим минимум из минимумов, найденных на предыдущих компьютерах. (разумеется, это примитивные рассуждения, без рекурсии и прочих тонкостей): Только это не ускоренный алгоритм поиска минимального значения, а лишь распределение выполнения обычного алгоритма между несколькими компьютерами (ядрами), дающий выигрыш лишь для массивов с большИм (в нашем случае - больше миллиона) числом элементов.
1
|
||
|
Комп_Оратор)
|
|||
| 08.08.2016, 12:44 | |||
|
Добавлено через 6 минут
0
|
|||
| 08.08.2016, 12:54 | |
|
IGPIGP, ничем) Моя беда в том, что я очень тороплюсь с ответом практически всегда.
Тороплюсь так, что очень поверхностно читаю и понимаю комментарии людей, на чьи сообщения я впоследствии отвечаю...
0
|
|
| 08.08.2016, 14:55 [ТС] | ||
Так что препод подходящий. А всякие кеши-шины-векторизации и прочие детали реализации для нас непринципиальны (по крайней мере в этой задаче) - нам главное Тем более, что общий принцип справедлив и в ситуациях, когда нет кешей-ограничений шин-векторизованных операций и прочих аппаратных особенностей.
0
|
||
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
| 08.08.2016, 15:17 | |
|
0
|
|
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
| 08.08.2016, 15:27 | |
|
0
|
|
| 08.08.2016, 15:36 [ТС] | |
|
Voivoid, ну вы же понимаете, что любая теоретическая задача должна решаться в рамках каких-либо условий и ограничений. Есть абстракция "массив" - это доступ за определенное количество времени (условных тактов) к любому элементу - все, это данность. А в реальности в одних ситуациях у нас оказывается есть некий кеш памяти, и если массив не влезает весь в кеш, то при доступе к разным участкам/элементам происходит перезагрузка кеша, что замедляет общий доступ. То же самое про векторизацию и т.п. Но нам на уроках теории фиолетово это все - мы занимаемся принципами. А на уроках практики мы будем учитывать все эти особенности аппаратной реализации. И то, только если они там будут.
1
|
|
|
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
||||||
| 03.02.2017, 14:48 | ||||||
0
|
||||||
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 03.02.2017, 17:10 | ||
|
Для С++17 есть constexpr версия min_element, так что "дождались".
Но для С++11 уже можно сделать CT алгоритм http://stackoverflow.com/quest... mpile-time Так что самый быстрый алгоритм вычисляет результат в момент компиляции и при выполнении мы лишь выводим результат. Добавлено через 8 минут Дабы не быть голословным: http://www.open-std.org/jtc1/s... /n4618.pdf Страница 993,
1
|
||
|
Комп_Оратор)
|
||
| 02.06.2017, 18:44 | ||
|
https://www.cyberforum.ru/blog... g4772.html
0
|
||
| 02.06.2017, 18:44 | |
|
Используя EXTREMUM найти все опорные планы и оптимальный план Нарисовать статичную картинку, используя минимум 5 цветов, минимум 30 объектов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|