数据结构与算法:树形选择排序:按照锦标赛的思想进行排序锦标赛排序

在选择类排序中,除了我们以往学习过的简单选择排序和堆排序之外,比较重点的还有树形选择排序,因为这种排序在面试中也偶有出现,所以这节课我们也来讲一讲。

树形选择排序又叫锦标赛排序(Tournament Sort),是一种按照锦标赛的思想进行选择排序的方法。属于对简单选择排序的一种改进。

以数组 { 16,1,45,23,99,2,18,67,42,10 } 为例,参考图1。

图1从下向上观察,这是第一趟排序,目的是从所有数组中选出值最小的元素。我们尝试描述下具体的操作步骤。

开始两两比较,于是元素16和1比较选择1,元素45和23比较选择23,元素99和2比较选择2,18和67比较选择18,42和10比较选择10。

现在,选择出的元素1、23、2、18、10又进行两两比较,元素1和23比较选择1,元素2和18比较选择2,元素10没有比较的对象直接被选择。

现在,选择出的元素1、2、10又进行两两比较,元素1和2比较选择1,元素10没有比较的对象直接被选择。

现在,选择出的元素1、10又进行比较,选择1。最终这个1也是树形结构的树根,找个地方保存本趟排序的最小元素1。

接着,在树叶中把第一趟已经选择出的元素1标记为一个最大值 ∞(这表示元素1不可能在比较中被再次选中了),然后进行第二趟排序,如图2所示。

图2还是从下向上观察,这是第二趟排序,前面挑选出的最小值1已经找了个地方保存,这里直接把1的值修改为一个最大值∞,这样,对节点进行两两比较时,标记为最大值的节点就不可能被选中。第二趟排序需要进行什么比较呢?

开始两两比较,元素16和最大值比较,选择元素16。元素45和23、99和2、18和67、42和10就不需要再次比较(因为第一趟排序比较过了)。

现在,选择出的元素16和23比较,选择元素16。元素2和18,元素10同样因为第一趟比较过,不需要再次比较。

现在,选择出的元素16和2比较,元素10同样因为第一趟比较过,不需要再次比较。

现在,选择出的元素2、10进行比较,选择2。最终这个2也是树形结构的树根,找个地方保存本趟排序的最小元素2。

然后继续把第二趟中已经选择出的元素2标记为一个最大值,就可以开始第三趟排序,这里就不赘述了。

所以可以看到,经过一次(第一趟)的完全比较后,从第二趟开始就不再需要完全的两两比较,这样就达到了节省时间提高效率的目的,这就是树形选择排序相较于简单选择排序一个重大的改进之处。但是也应该看到,树形选择排序需要通过构造出二叉树这种树形结构来辅助排序,所以还需要辅助存储空间。

上述图1和图2意在阐述树形选择排序理论,理论上来说树形选择排序并不复杂。但若通过代码实现,则是需要构建一棵完全二叉树来实现对数据排序的。换句话说,图1和图2绘制得比较简单,很多额外的节点并没有绘制出来。

第一趟,两两比较,找到最小值保存到根节点中,如图3所示。

接着,沿着根节点向叶子节点找,找到了最小值1所在的叶子节点,把该叶子节点的值从原来保存的1修改为最大值 ∞,如图4所示。

接着要开始第二趟比较了,第二趟比较时叶子节点之间不再需要两两比较,只需要16和∞作比较,此时当然是16更小,于是,沿着这个比较路线再前进到树根,就能把当前树中的最小节点找到并保存到根中。如图5所示。

接着,沿着根节点向叶子节点找,找到了最小值2所在的叶子节点,把该叶子节点的值从原来保存的2修改为最大值 ∞,如图6所示。

持续上述步骤,就可以把整个数据序列按从小到大的顺序排列好。

下面我给出树形选择排序的实现代码。

在main主函数中,加入测试代码。

代码的执行结果如下:

此外,经过我测试,认为上述算法的实现代码是稳定的。如果你稍微调整一下其实现代码,改为不稳定的也很容易。

树形选择排序的每一趟排序都会减少需要两两比较的元素数量,从而达到了节省时间提高效率的目的,这就是树形选择排序相较于简单选择排序一个重大的改进之处。 但是我们也应该看到,树形选择排序需要通过构造出二叉树这种树形结构来辅助排序,所以还需要辅助存储空间。

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

醉竺

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

打赏作者

抵扣说明:

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

THE END
0.世界杯足球什么意思理想股票技术论坛世界杯足球什么意思,世界杯足球解释, 国际足球赛事定义, 足球锦标赛概念世界杯足球是一种国际性的足球比赛,参与的队伍来自不同国家,通过比赛争夺足球冠军。这一赛事通常每四年举行一次,是足球运动中最高荣誉的比赛之一,吸引了全球观众的关注。 世界杯很懂足球,股票很懂技术 [股市实战-技术交流论坛] 很懂技术和很https://www.55188.com/tag-thread-5096277-1.html
1.德扑锦标赛中的ICM(独立筹码模型)快速指南如果你参加德扑锦标赛,就需要了解ICM(独立筹码模型)的概念。 但是围绕ICM,以及如何正确应用它,存在很多混淆和错误信息。这篇短文将有助于消除这种困惑。让我们开始吧! ICM概念简述 简单地说,ICM是德扑锦标赛中使用的一个概念,用于确定每个筹码相对于锦标赛奖池的价值。 在常规桌游戏中,10000个筹码的价值正好是10000。然而,在锦标赛中,1https://www.legendpoker.cn/xw/zx/2984.html
2.职业赛事的定义与锦标赛关系探讨在当今社会,职业赛事的蓬勃发展不仅展现了竞技体育的魅力,也为全球数以亿计的观众带来了无与伦比的视觉盛宴。不同于传统意义上的业余比赛,职业赛事通常涉及高水平运动员、丰厚奖金和复杂组织结构。这种专业化的发展趋势使得我们有必要深入探讨“职业赛事”的定义及其与锦标赛之间微妙而紧密的关系。 http://www.sh-xinuo.cn/post/15013.html
3.足球知识6、世界上哪个国家在世界杯足球赛中取得冠军次数最多? 巴西最多共4次。 1958年(6届 );1962年(7届);1970年(9届);1994年(15届)。 二、足球技术 1、足球技术的概念是什么? 足球技术是指运动员在足球比赛中所采用的各种合理动作的总称。 2、足球技术可分为哪两大类? https://ldtyb.buu.edu.cn/art/2011/5/18/art_10907_111635.html
4.中国经验与中国特色经济社会学:标识性概念与关键议题摘要:纵观中国经济社会学40多年的发展历程,社会学者立足中国经验,坚持调查研究与理论建构相结合,既借鉴吸收西方理论,又拒绝照抄照搬,提出了“另一只看不见的手”“关系社会学”“关系产权”“工人阶级再形成”“三位一体的城镇化”“锦标赛体制”等一系列标识性概念,从宏观、中观和微观三个层面推进了中国特色经济社会https://www.cssn.cn/shx/202302/t20230207_5586433.shtml
5.政策扩散中“政策再创新”的生成路径与内在逻辑​——基于16个总体来看,在现有关于官员激励、地方政府竞争等问题的研究中,强调增长竞争的锦标赛概念框架占据重要地位,标尺赛、行政竞标制等也有较强的解释力。而本文的“创新擂台赛”概念所揭示的地方政府行为逻辑与前述概念相比,主要存在以下三方面的不同。 其一,“创新擂台赛”强调对主体治理目标和非主体治理目标进行整体分析。一http://gzlz.gzhu.edu.cn/info/1023/2337.htm
6.周黎安:拒绝童话2008年,周黎安出版《转型中的地方政府:官员激励与治理》一书,分析中国治理体系改革开放后的转型过程。数年后,周黎安提出“官场+市场”模式,进一步完善了晋升锦标赛理论,该模式也成为解释中国经济奇迹的重要范式。而他的晋升锦标赛、行政发包制等原创性概念的影响力,也早已超出经济学界,被社会学、政治学等学界认可。 https://www.gsm.pku.edu.cn/info/1022/22801.htm