java实现的堆排序
堆的概念
Heap:
- 必须是一个完全二叉树
- 满足parent > children,每个结点都是
堆排序

- 完成堆排序,首先使得该序列满足堆的特征,首先heapify,使之成为堆,然后每次拿出堆顶的最大元素放于堆末尾与堆末尾交换,堆末尾的元素然后不加入下次最大值的选取。然后堆顶元素heapify,构建堆,堆顶又得出了最大值,类似于选择排序,但是比较的次数比选择排序要少很多,大批量的数据的时候,最坏情况也只是N*log(N)
- 自定义待比较元素的比较规则,可以生成非递增和非递减序列,比较灵活,实现了代码复用
Sort.java
1 | |
HeapSort.java
1 | |
测试|Cat.java
1 | |
测试|Test.java
1 | |
结果

java实现的堆排序
https://blog.wangxk.cc/2020/08/25/java实现的堆排序/