Tri du tas par sélection

L'un des algorithmes de tri de tableau les plus inhabituels est HeapSort, qui est basé sur un algorithme de tri par sélection, utilise une structure de données de tas pour trouver rapidement l'élément maximal, ainsi qu'un moyen de stocker un arbre binaire dans un tableau linéaire. Traitons tout dans l'ordre.





Trier par sélection





, . - . 





, , 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