選択によるヒープソート

最も珍しい配列ソートアルゴリズムの1つはHeapSortです。これは、選択ソートアルゴリズムに基づいており、ヒープデータ構造を使用して最大要素をすばやく見つけ、バイナリツリーを線形配列に格納する方法も使用します。すべてを順番に処理しましょう。





選択で並べ替え





, . - . 





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