
- •Стійка сортування
- •[ Правити ]Алгоритми стійкою сортування
- •[ Правити ]Сортування злиттям з додатковою пам'яттю
- •[ Правити ]Сортування з використанням стійкого поділу
- •[ Правити ]Алгоритми сортування злиттям без додаткової пам'яті
- •[ Правити ]Алгоритм Пратта
- •[ Правити ]Алгоритм без пошуку медиан
- •[ Правити ]Стійка сортування без додаткової пам'яті за час o ('n' log 'n')
- •[ Правити ]Шляхи поліпшення алгоритмів
[ Правити ]Стійка сортування без додаткової пам'яті за час o ('n' log 'n')
-
Цей розділ не завершений .
Ви допоможете проекту, виправивши і доповнивши його.
[ Правити ]Шляхи поліпшення алгоритмів
У всіх вищенаведених алгоритмах при розбитті вихідного масиву на частини рекурсивне розбиття можна зупинити, якщо розмір разбиваемого масиву стане досить маленьким. Тоді можна застосувати будь-якої з простих алгоритмів сортування (наприклад, сортування вставками ), які, як відомо, працюють швидше ніж складні, якщо розмір вхідного масиву невеликий. Фактично даний прийом можна застосувати не тільки для представлених тут алгоритмів, а й для будь-якого іншого алгоритму, де застосовується рекурсивне розбиття вихідного масиву (наприклад, звичайна нестабільна швидке сортування ). Конкретне число вхідних елементів, при якому треба переходити на простий алгоритм сортування, залежить від використовуваної обчислювальної машини.
В алгоритмі Пратта, алгоритмі без пошуку медиан і алгоритмі з використанням стійкого поділу замість того, щоб кожен раз рекурсивно викликати процедуру злиття, можна динамічно виділити масив тимчасових змінних. Тоді можна буде продовжувати розбиття діапазону лише до тих пір, поки число елементів в більшому діапазоні не стане менше або дорівнює місткості тимчасового масиву. Фактично на деякому кроці рекурсії алгоритм Пратта і алгоритм без пошуку медиан перетворюються в алгоритм простого злиття. Т. о. якщо в системі досить динамічної пам'яті, то асимптотичну час роботи можна довести до O (n log n) замість O (n log ² n).