首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

数据结构之树形选择排序(锦标赛排序)

  • 24-02-21 21:33
  • 3539
  • 13730
blog.csdn.net

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

锦标赛排序也叫树形选择排序,是一种按照锦标赛的思想进行选择的排序方法,该方法是在简单选择排序方法上的改进。简单选择排序,花费的时间大部分都浪费在值的比较上面,而锦标赛排序刚好用树保存了前面比较的结果,下一次比较时直接利用前面比较的结果,这样就大大减少比较的时间,从而降低了时间复杂度,由O(n^2)降到O(nlogn),但是浪费了比较多的空间,“最大的值”也比较了多次。

大概过程如下:

首先对n个记录进行两两比较,然后优胜者之间再进行两两比较,如此重复,直至选出最小关键字的记录为止。

类似甲乙丙三队比赛,前提是有这样一种传递关系:若乙胜丙,甲胜乙,则认为甲必能胜丙。

锦标赛排序图解如下

初始序列,这么多队伍参加比赛

这里写图片描述

两两比较之,用一个完全二叉树表示,反复直到一趟比较后,选出冠军

这里写图片描述

找到了 Li,是冠军,选出冠军的比较次数为 2^2+2^1+2^0 = 2^3 -1 = n-1,然后继续比较,把原始序列的 Li 去掉

这里写图片描述
这里写图片描述

选了 Cha,选出亚军的比较次数为 3,即 log2 n 次。 同理,把 cha 去掉,继续两两比较
这里写图片描述
这里写图片描述
找到了 Liu,其后的 n-2 个人的名次均如此产生

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

所以对于 n 个参赛选手来说,即对 n 个记录进行锦标赛排序,总的关键字比较次数至多为 (n-1)log2 n + n -1,故时间复杂度为: O(nlogn)。
最后结果:
这里写图片描述

此法除排序结果所需的 n 个单元外,尚需 n-1 个辅助单元。

这个过程可用一棵有n个叶子结点的完全二叉树表示,根节点中的关键字即为叶子结点中的最小关键字。在输出最小关键字之后,根据关系的可传递性,欲选出次小关键字, 仅需将叶子结点中的最小关键字改为“最大值”,如∞,然后从该叶子结点开始,和其左(右)兄弟的关键字进行比较,修改从叶子结点到根的路径上各结点的关键字,则根结点的关键字即为次小关键字。
  • 1

也就是所谓的树形选择排序,这种算法的缺点在于:辅助存储空间较多、最大值进行多余的比较。

树形选择排序

思想:首先对 n 个记录的关键字进行两两比较,然后在其中 不大于 n/2 的整数个较小者之间再进行两两比较,直到选出最小关键字的记录为止。可以用一棵有 n 个叶子结点的完全二叉树表示。

树形选择排序图解如下:

这里写图片描述
对 n 个关键字两两比较,直到选出最小关键字为止,一趟排序结束
这里写图片描述

反复这个过程,仅需将叶子结点的最小关键字改为最大值∞,即可

这里写图片描述

然后从该叶子结点开始,继续和其左右兄弟的关键字比较,找出最值
这里写图片描述

这里写图片描述

时间复杂度:由于含有 n 个叶子结点的完全二叉树的深度为,则在树形选择排序中,除了最小关键字外,每选择一个次小关键字仅需进行 次比较,故时间复杂度为 O(n logn)。

缺点: 1、与“∞”的比较多余; 2、辅助空间使用多。

为了弥补这些缺点,1964年,堆排序诞生。

注:本文转载自blog.csdn.net的小白菜小青菜的文章"https://blog.csdn.net/lihao161530340/article/details/78938403"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top