一眨攘、原理
堆排序是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一個(gè)中排序算法。堆積是一個(gè)近似完全二叉樹結(jié)構(gòu)嚣州,并同時(shí)滿足堆積的性質(zhì):即子節(jié)點(diǎn)的健值或索引總是小于或大于它的父節(jié)點(diǎn)
(1)將初始待排序關(guān)鍵字序列(R1,R2...,Rn)構(gòu)建成大頂堆鲫售,此堆為初始的無(wú)序區(qū)
(2)將堆頂元素R[1]與最后一個(gè)元素R[n]交換,此時(shí)得到新的無(wú)序區(qū)(R1,R2,...Rn-1)和新的有序區(qū)(Rn),且滿足R[1,2,...n-1]<=R[n];
(3)由于交換后新的堆頂R[1]可能違反堆的性質(zhì)该肴,因此需要對(duì)當(dāng)前無(wú)序區(qū)(R1,R2,...Rn-1)調(diào)整為新堆情竹,然后再次將R[1]與無(wú)序區(qū)最后一個(gè)元素交換,得到新的無(wú)序元素(R1,R2,...Rn-2)和新的有序區(qū)(Rn-1, Rn)匀哄。不斷重復(fù)此過(guò)程知道有序區(qū)的元素個(gè)數(shù)為n-1,則整個(gè)排序過(guò)程完成
最佳情況:T(n) = O(n * log n)? ? ?最差情況: T(n) = O(n * log n),? ?平均情況: T(n) = O(n * log n)