LINUX.ORG.RU

BubbleSort, ShellSort, QuickSort + Threads


0

0

Привет!

Есть задача:
Организовать сортировку массива методами Шелла, Хоара, пузырька в
разных потоках.

Сами алгоритмы тривиальны, но вот реализация их с использованием
нескольких потоков для меня не так очевидна.

Начнём с QuickSort.
Здесь всё совершенно понятно, т.к. имеет место быть _полная_
параллельность по данным (левая и правая, относительно
опорного элемента, части массива не пересекаются).

А вот с BubbleSort и ShellSort всё несколько сложнее.
BubbleSort можно свести к простой рекурсии, но работа всегда
будет происходить с одной частью массива (т.е. в одном треде)!

В ShellSort мы сперва делаем [log2(n/2)] шагов парных перестановок
и затем приходим к BubbleSort.
Хотя перестановки также параллельны по данным, целесообразность
выполнения перестановки 2-х элементов в отдельном треде вызывает
сомнения (даже только переключение контекста будет стоить дороже).

Объясните мне pls как же можно прикрутить многопоточность к 
этим двум сортировкам. Может я чего не понимаю?

P.S.
Как наверное стало понятно из условия - это задачка из универа.
У меня нет возможности уточнить условие задачи (я вообще располагаю
только её формулировкой).
Поэтому у меня закралось сомнение - а может на самом деле нужно
просто отсортировать один и тот же (возможно очень большой) массив
в разных тредах используя разные методы? 
Например для того, чтобы узнать какой метод быстрее (хотя это и так
понятно).

Я понял условие так: есть три одинаковых массива, надо запустить три потока, каждый сортирит свой массив своим методом. Это весьма стандартное задание. Ровно это (может, с другой подборкой алгоритмов) есть у меня в примере в дельфям, с красивой визуализацией, хочешь - дам =)

anonymous
()

когда сделаешь, прогони по тестам, чтоб узнать быстрее ли работает (просто интересно)

theserg ★★★
()
Ответ на: комментарий от theserg

Дык это... и так ясно что QuickSort всех зарулит. ShellSort на случацных массивах имеет сложность вроде n^1.2, тогда как QuickSort практически всегда n log n (про bubble даже не говорю)

anonymous
()
Ответ на: комментарий от theserg

и только на спецификеских тестах (вроде "почти отсортированного массива) QuickSort может проигрывать каким-нибудь другим методам.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.