您的位置:首页 > 编程语言 > Java开发

Java排序之堆排序

2012-10-20 23:31 197 查看

一、基本概念

要掌握堆排序,先要了解堆这种数据结构。


堆是一个近似完全二叉树的结构,其任意节点满足性质:

Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]或者Key[i]>=Key[2i+1]&&key>=key[2i+2]

即任何一非叶节点的键值不大于或者不小于其左右孩子节点的键值。

大顶堆:满足Key[i]>=Key[2i+1]&&key>=key[2i+2]

小顶堆:满足Key[i]<=Key[2i+1]&&key<=key[2i+2]

排序过程:

将初始带排序列构造成大顶堆

将堆顶元素与最后一个元素交换,然后从新构造大顶堆

重复第2步直到序列有序。

二、算法特点

是否稳定:false

平均时间复杂度:O(nlogn)

最优时间复杂度:O(nlogn)

最差时间复杂度:O(nlogn)

空间复杂度:  O(1)

三、相关代码

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐