天天看點

堆排序

堆排序分為兩個階段:1、将原始數組組裝成一個堆;2、從堆頂逐個取出元素并得到排序結果。(如果是最大堆,則是重複删除最大元素,然後從後往前放入到數組。)

用sink()隻需掃描數組中的一半元素。

堆排序可以不需要額外的空間,最優的利用空間和時間。可用于嵌入式系統。缺點:無法利用緩存,影響緩存命中。