数据结构

内排序6:堆积排序

2020-05-04  本文已影响0人  玲儿珑

堆积排序可以认为是对直接选择排序法的一种改进。

堆积的定义:具有n个数据元素的序列,当且仅当满足条件 a. ki>=k2i 且 ki>=k2i+1 或者 b.ki<=k2i 且 ki<=k2i+1 时,称序列K为一个堆积,简称。有时称满足条件a的堆积为大顶堆积,满足条件b的堆积为小顶堆积

这里采用大顶堆积。
核心思想:第i趟排序就是将序列的前n-i+1个元素组成的序列转换为一个堆积,然后将堆积的第1个元素与堆积的最后那个元素交换位置。
根据这个思想,堆积排序的过程可以归纳为以下步骤:
1.建立初始堆积
2.交换堆积的第1个元素(即最大元素)与堆积的最后那个元素的位置
3.将移走最大值元素之后的剩余元素组成的序列再转换为一个堆积
4.重复上述过程的第2步和第3步n-1次。
算法中的变量i指出根结点的序号(或者指出某棵子树根结点的序号),变量j指出其左右子树根结点值最大者的序号。

算法如下:

(待完成)

性能:
时间复杂度:O(nlog2n)
空间复杂度:O(1)。
是 不稳定排序方法。
不适于 链表上实现。

上一篇 下一篇

猜你喜欢

热点阅读