143
правки
Изменения
→Реализация
== Реализация ==
<tex>A</tex> {{---}} массив, который необходимо отсортировать; <tex>n</tex> {{---}} количество элементов в нем; <tex> \mathrm{buildHeap(A)} </tex> - процедура, которая строит из передаваемого массива невозрастающую кучу в этом же массиве; <tex> \mathrm{siftDown(A, i, len)} </tex> {{---}} процедура, которая просеивает вниз элемент <tex>A[i]</tex> в куче из <tex>len</tex> элементов, находящихся в начале массива <tex>A</tex>.
'''fun''' heapsort(A : '''list <T>'''): buildHeap(A); heapSize = A.size;
'''for''' i = 0 '''to''' n - 2
swap(A[0], A[n - 1 - i]); heapSize--; siftDown(A, 0, heap_size);
== Сложность ==