EMZETT.
Увійти

Пірамідальне сортування (Heapsort)

Коротко: Heapsort сортує, перетворюючи дані на max-купу й потім багаторазово переміщуючи найбільший елемент у кінець.

Докладніше: Вона завжди працює за O(n log n), навіть у найгіршому разі, і не потребує додаткової пам’яті. На практиці, проте, зазвичай повільніша за швидке сортування, бо читає пам’ять стрибками, а не лінійно.

Подробиці

  • Крок 1: Масив за O(n) перетворюється на max-купу: від середини назад кожен вузол «просівається» вниз.
  • Крок 2: Корінь (найбільший елемент) міняється місцями з останнім елементом. Купа зменшується на 1, новий корінь просівається.
  • Повторювати, доки купа не спорожніє. Масив тоді відсортований за зростанням.
  • Властивості: не стійка, на місці (in place), не залежить від попередньої впорядкованості.
  • Застосування: Як запасний варіант в introsort, якщо швидке сортування йде в надто глибоку рекурсію. Порівняйте купа й черга з пріоритетом.

Див. також: Сортування злиттям