Сортування комірками або коміркове сортування (англ. Bucket sort) — це стабільний алгоритм впорядкування, що доцільно використовувати, якщо вхідні дані розподілені рівномірно. В основі алгоритму лежить розподілення всіх елементів по скінченній кількості комірок. Кожна комірка впорядковується окремо іншим алгоритмом впорядкування або ж рекурсивно алгоритмом впорядкування комірками. Сортування комірками є узагальненням сортування підрахунком.
Клас | алгоритм сортування |
---|---|
Структура даних | масив |
Найгірша швидкодія | |
Середня швидкодія | |
Просторова складність у найгіршому випадку |
Алгоритм працює за час , оскільки використовує додаткову інформацію про елементи.
Псевдокод алгоритму
Тоді як сортування підрахунком припускає, що входові дані складються з цілих чисел із маленького діапазону, сортування комірками припускає, що входові дані утворені випадковим процесом, що розподіляє елементи рівномірно і незалежно в проміжку . Процедура виконує впорядкування масиву
1 2 for to 3 do Вставити елемент в список 4 for to 5 do Впорядкувати список 6 Об'єднати списки
Аналіз складності алгоритму
Виконання всіх елементів алгоритму, крім рядка 5, очевидно вимагає часу. Залишається підрахувати повний час, що знадобиться на n викликів алгоритму сортування у рядку 5. Будемо вважати, що використовується алгоритм сортування вставкою.
Час роботи сортування комірками буде: , де — кількість елементів масиву, що потрапили в i-у комірку.
Обчислимо математичне очікування:
Так як всі комірки рівноправні, то
Справедливим є запис:
Тобто, представляється сумою незалежних однаково розподілених випадкових величин. Тоді:
Підставивши результат у вираз для маємо:
Отже, очікуваний час роботи алгоритму лінійно залежить від розміру вхідного масиву.
Зауваження: середній час роботи буде лінійним навіть у випадку нерівномірного розподілу елементів масиву. Для лінійного часу необхідно лише, щоб сума квадратів кількостей елементів в кожній комірці лінійно залежала від загальної кількості елементів.
Примітки
- Т. Кормен; Ч. Лейзерсон; Р. Рівест; К. Стайн (2009) [1990]. Розділ 8.4: Коміркове сортування. Вступ до алгоритмів (вид. 3rd). MIT Press і McGraw-Hill. ISBN .
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Sortuvannya komirkami abo komirkove sortuvannya angl Bucket sort ce stabilnij algoritm vporyadkuvannya sho docilno vikoristovuvati yaksho vhidni dani rozpodileni rivnomirno V osnovi algoritmu lezhit rozpodilennya vsih elementiv po skinchennij kilkosti komirok Kozhna komirka vporyadkovuyetsya okremo inshim algoritmom vporyadkuvannya abo zh rekursivno algoritmom vporyadkuvannya komirkami Sortuvannya komirkami ye uzagalnennyam sortuvannya pidrahunkom Sortuvannya komirkamiKlasalgoritm sortuvannyaStruktura danihmasivNajgirsha shvidkodiyaO n2 displaystyle O n 2 Serednya shvidkodiyaO n k displaystyle O n k Prostorova skladnist u najgirshomu vipadkuO n k displaystyle O n cdot k Algoritm pracyuye za chas O N displaystyle O N oskilki vikoristovuye dodatkovu informaciyu pro elementi Psevdokod algoritmuTodi yak sortuvannya pidrahunkom pripuskaye sho vhodovi dani skladyutsya z cilih chisel iz malenkogo diapazonu sortuvannya komirkami pripuskaye sho vhodovi dani utvoreni vipadkovim procesom sho rozpodilyaye elementi rivnomirno i nezalezhno v promizhku 0 1 displaystyle 0 1 Procedura Bucket Sort A displaystyle Bucket Sort A vikonuye vporyadkuvannya masivu A displaystyle A Bucket Sort A displaystyle Bucket Sort A 1 n length A displaystyle n leftarrow length A 2 for i 1 displaystyle i leftarrow 1 to n displaystyle n 3 do Vstaviti element A i displaystyle A i v spisok B nA i displaystyle B lfloor nA i rfloor 4 for i 0 displaystyle i leftarrow 0 to n 1 displaystyle n 1 5 do Vporyadkuvati spisok B i displaystyle B i 6 Ob yednati spiski B 0 B 1 B n 1 displaystyle B 0 B 1 B n 1 Analiz skladnosti algoritmuVikonannya vsih elementiv algoritmu krim ryadka 5 ochevidno vimagaye O n displaystyle O n chasu Zalishayetsya pidrahuvati povnij chas sho znadobitsya na n viklikiv algoritmu sortuvannya u ryadku 5 Budemo vvazhati sho vikoristovuyetsya algoritm sortuvannya vstavkoyu Chas roboti sortuvannya komirkami bude T n 8 n i 0n 1O ni2 displaystyle T n Theta n sum i 0 n 1 O left n i 2 right de ni displaystyle n i kilkist elementiv masivu sho potrapili v i u komirku Obchislimo matematichne ochikuvannya M T n M 8 n i 0n 1O ni2 displaystyle M T n M left Theta n sum i 0 n 1 O left n i 2 right right 8 n M i 0n 1O ni2 8 n i 0n 1O M ni2 displaystyle Theta n M left sum i 0 n 1 O left n i 2 right right Theta n sum i 0 n 1 O left M left n i 2 right right Tak yak vsi komirki rivnopravni to M ni2 F n i displaystyle M left n i 2 right F n forall i Spravedlivim ye zapis ni j 1nxij xij 1 A i B j 0 displaystyle n i sum j 1 n chi ij quad chi ij begin cases 1 amp A i in B j 0 end cases Tobto ni displaystyle n i predstavlyayetsya sumoyu nezalezhnih odnakovo rozpodilenih vipadkovih velichin Todi M ni2 M j 1nxij 2 M j 1n k 1nxijxik M j 1nxij2 j 1n 1 k n k jnxijxik displaystyle M left n i 2 right M left left sum j 1 n chi ij right 2 right M left sum j 1 n sum k 1 n chi ij chi ik right M left sum j 1 n chi ij 2 sum j 1 n sum 1 leq k leq n k neq j n chi ij chi ik right j 1nM xij2 j 1n 1 k n k jnM xijxik j 1n1n j 1n 1 k n k jnM xij M xik displaystyle sum j 1 n M left chi ij 2 right sum j 1 n sum 1 leq k leq n k neq j n M left chi ij chi ik right sum j 1 n frac 1 n sum j 1 n sum 1 leq k leq n k neq j n M left chi ij right M left chi ik right 1 n n 1 1n2 1 n 1n 2 1n displaystyle 1 n n 1 frac 1 n 2 1 frac n 1 n 2 frac 1 n Pidstavivshi rezultat u viraz dlya T n displaystyle T n mayemo M T n 8 n i 0n 1O 2 1n 8 n O n 8 n displaystyle M T n Theta n sum i 0 n 1 O left 2 frac 1 n right Theta n O n Theta n Otzhe ochikuvanij chas roboti algoritmu linijno zalezhit vid rozmiru vhidnogo masivu Zauvazhennya serednij chas roboti bude linijnim navit u vipadku nerivnomirnogo rozpodilu elementiv masivu Dlya linijnogo chasu neobhidno lishe shob suma kvadrativ kilkostej elementiv v kozhnij komirci linijno zalezhala vid zagalnoyi kilkosti elementiv PrimitkiT Kormen Ch Lejzerson R Rivest K Stajn 2009 1990 Rozdil 8 4 Komirkove sortuvannya Vstup do algoritmiv vid 3rd MIT Press i McGraw Hill ISBN 0 262 03384 4