Um dos algoritmos de classificação de matriz mais incomuns é HeapSort, que é baseado em um algoritmo de classificação de seleção, usa uma estrutura de dados heap para encontrar rapidamente o elemento máximo e também uma maneira de armazenar uma árvore binária em uma matriz linear. Vamos tratar de tudo em ordem.
Classificar por seleção
.
, . - .
, , 1.
, N . , :
(2*N + 1) + (2*(N - 1) + 1) + … + (2*K + 1) + … + 2*1 + 1 = 2(N*N - N)/2 + N = N*N
, - O(N^2).
.
. - ? , , «» «». , . , - 1 .
, :
, . , , , . .
P = (x - 1) / 2
L = 2x + 1
R = 2x + 2
: .
void heapify(int root, int size)
, , . - .
?
, , «» . -- .
- , , .
, . heapify , , - , , .
heapify()
. .
HeapSort
? - . N/2 . , , log 2 N.
, - (N log N) / 2
. . , . 1, , .
«» -- , , . log 2 K , K - .
N , , !
O(N log 2 N).
- - «» , .
" ". 20 - , () . . . - .