排序-选择排序-树形选择排序-锦标赛排序

树形选择排序(锦标赛排序)

树形选择排序Tree Selection Sort)也称作锦标赛排序,是一种按照锦标赛的思想进行选择排序的方法。

算法思路

[算法步骤]

首先对n个记录的关键字进行两两对比,然后在其中 ⌈ n 2 ⌉ \Big\lceil \frac{n}{2} \Big\rceil 2n个较小者之间再进行两两比较,如此反复,直至选出最小关键字的记录为止。这个过程可以用一棵有n个叶子结点的完全二叉树表示。

例如,下图中的二叉树表示从8个关键字中选出最小关键字的过程。
① 8个叶子结点中依次存放排序之前的8个关键字,每个非终结点中的关键字均等于其左、右孩子结点中较小的关键字,则根结点的关键字即为叶子结点中的最小关键字。
② 再输出最小关键字之后,根据关系的可传递性,欲选出次小关键字,仅需要将叶子节点中的最小关键字(13)改为“最大值”,然后从该叶子结点开始,和其左(或右)兄弟的关键字进行比较,修改从叶子结点到根的路径上各结点的关键字,则根结点的关键字即为次小关键字。
③ 同理,可依次选出从小到大的所有关键字。
选出最小关键字为13
选出最小关键字为13
 选出次小关键字为27
选出次小关键字为27
选出第三小关键字38
选出第三小关键字为38

算法实现

定义存放记录的线性表结构


代码实现


测试案例


测试结果



算法分析

① 时间复杂度:
由于含有n个叶子结点的完全二叉树的深度为 ⌈ log ⁡ 2 n ⌉ \Big\lceil \log_{2}^{n} \Big\rceil log2n+1,则再树形选择排序中,除了最小关键字之外,每选择一个次小关键字仅需要进行 ⌈ log ⁡ 2 n ⌉ \Big\lceil \log_{2}^{n} \Big\rceil log2n次比较,因此,它的时间复杂度为O(n log ⁡ 2 n \log_{2}^{n} log2n)。

② 空间复杂度
辅助存储空间较多

[算法特点]

树形选择排序方法存在辅助存储空间较多、和“最大值”进行多余的比较等缺点。为了改进这个缺点,提出了新的选择排序–堆排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老攀呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值