一、基本概念

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

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

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]

 

排序过程:

  1. 将初始带排序列构造成大顶堆
  2. 将堆顶元素与最后一个元素交换,然后从新构造大顶堆
  3. 重复第2步直到序列有序。

二、算法特点

是否稳定:false

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

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

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

空间复杂度:  O(1)

三、相关代码

 

 

 

 

相关文章:

  • 2022-12-23
  • 2022-01-30
  • 2021-11-24
  • 2021-10-24
  • 2021-06-09
  • 2021-04-13
猜你喜欢
  • 2021-09-16
  • 2021-07-14
  • 2021-06-10
  • 2021-11-29
  • 2021-09-24
  • 2021-10-06
相关资源
相似解决方案