J
J
JavaInterview
Search…
J
J
JavaInterview
README
架构篇
大数据篇
书籍总结
代码篇
IO 篇
Java 基础知识
深入浅出 JVM
README
machinelearning
排序篇
冒泡排序
基数排序
选择排序
插入排序
希尔排序
归并排序
快速排序
堆排序
计数排序
桶排序
Web 篇
Powered By
GitBook
堆排序
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:
1.
大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;
2.
小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列;
堆排序的平均时间复杂度为 Ο(nlogn)。
1. 算法步骤
1.
创建一个堆 H[0……n-1];
2.
把堆首(最大值)和堆尾互换;
3.
把堆的尺寸缩小 1,并调用 shift_down(0),目的是把新的数组顶端数据调整到相应位置;
4.
重复步骤 2,直到堆的尺寸为 1。
2. 动图演示
动图演示
Previous
快速排序
Next
计数排序
Last modified
3yr ago
Copy link
Contents
1. 算法步骤
2. 动图演示