堆排序算法的时间复杂度是O(nlgn),比插入排序要好,跟归并排序相同,但是与归并排序不一样的地方在于,堆排序不需要额外的存储空间,或者说,只需要常数个额外的存储空间,属于内排序算法。
有关插入排序和归并排序,请参照:
原理是构造最大堆,并将根节点(最大值)放到数组有效最后位,直到堆节点数量为1。
#include <stdio.h>
int parent(int i);
int left(int i);
int right(int i);
void max_heapify(int *a,int i,int len);
void build_max_heap(int *a,int len);
void heapsort(int *a,int len);
main(