Ordenar montón por selección

Uno de los algoritmos de ordenación de matrices más inusuales es HeapSort, que se basa en un algoritmo de ordenación de selección, utiliza una estructura de datos de pila para encontrar rápidamente el elemento máximo y también una forma de almacenar un árbol binario en una matriz lineal. Tratemos con todo en orden.





Ordenar por selección





, . - . 





, , 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 - , () . . . - .





.








All Articles