Привет! Есть задача: Организовать сортировку массива методами Шелла, Хоара, пузырька в разных потоках. Сами алгоритмы тривиальны, но вот реализация их с использованием нескольких потоков для меня не так очевидна. Начнём с QuickSort. Здесь всё совершенно понятно, т.к. имеет место быть _полная_ параллельность по данным (левая и правая, относительно опорного элемента, части массива не пересекаются). А вот с BubbleSort и ShellSort всё несколько сложнее. BubbleSort можно свести к простой рекурсии, но работа всегда будет происходить с одной частью массива (т.е. в одном треде)! В ShellSort мы сперва делаем [log2(n/2)] шагов парных перестановок и затем приходим к BubbleSort. Хотя перестановки также параллельны по данным, целесообразность выполнения перестановки 2-х элементов в отдельном треде вызывает сомнения (даже только переключение контекста будет стоить дороже). Объясните мне pls как же можно прикрутить многопоточность к этим двум сортировкам. Может я чего не понимаю? P.S. Как наверное стало понятно из условия - это задачка из универа. У меня нет возможности уточнить условие задачи (я вообще располагаю только её формулировкой). Поэтому у меня закралось сомнение - а может на самом деле нужно просто отсортировать один и тот же (возможно очень большой) массив в разных тредах используя разные методы? Например для того, чтобы узнать какой метод быстрее (хотя это и так понятно).
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от theserg
Ответ на:
комментарий
от theserg
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [C++/Qt] Мистика с QTime (2009)
- Форум Александреску пытается статистически улучшить quicksort (2020)
- Форум cmake Threads::Threads (2020)
- Форум thread in thread (2004)
- Форум Threads (2009)