【数据结构】——排序算法——3.2、堆排序

【数据结构】——排序算法——3.2、堆排序

一、先上维基的图:

Sorting heapsort anim.gif

图一、堆排序算法的演示(首先,将元素进行重排,以符合堆的条件。图中排序过程之前简单的绘出了堆树的结构。)

分类排序算法
数据结构数组
最差时间复杂度O(n \log n)
最优时间复杂度O(n \log n)[1]
平均时间复杂度\Theta(n \log n)
最差空间复杂度O(n) total, O(1)auxiliary

二、描述:

堆排序(Heapsort)是指利用这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

二叉堆满足二个特性:

1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。

2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。

一般都用数组来表示堆,i结点的父结点下标就为(i – 1) / 2。它的左右子结点下标分别为2 * i + 1和2 * i + 2。如第0个结点左右子结点下标分别为1和2。


图二、堆的数组表示

参考:白话经典算法系列之七 堆与堆排序













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值