Python | 选择排序之树形选择排序

引言

选择排序里面主要讲了三个排序,分别是简单选择排序、树形选择排序、堆排序。今天这篇文章主要讲树形选择排序,树形选择排序也被称为锦标赛排序,树形选择排序运用了锦标赛的思想进行排序,树形选择排序是指首先对n个记录的关键字进行两两比较,然后在n/2个较小者之间再进行两两比较,如此重复,直至选出最小的记录为止。

问题描述

给定一个序列,我们将如何用树形选择排序来将它排序呢,下面将结合图形和文字一起讲述。

示例1:对数据表A=(73,45,79,90,81,75,94,97)进行排序

输出:45 73 75 79 81 90 94 97

解决方案

数据表A是乱序的,现在需要将它按照从小到大的顺序排序好,根据树形选择排序的思想首先需要将比较的记录全部作为叶子,然后按照从左到右的顺序,两两进行比较,选出最小的那个,然后将比较后的n/2个元素又按照从左到右的顺序两两进行比较,选出最小的,一直重复这样操作后,会从底向上形成一个完全二叉树。可能读完这段文字还是不好理解,下面我将用图示来具体描述。

1. 构建二叉树:图1是数据表A构成的二叉树,首先直接将数据表A的数据直接放在最下面,也就是二叉树的叶子;然后从左到右两两进行比较,例如73和45比较后选出最小的45,79和90比较后选出最小的79,将选出的45和79比较选出最小的45,一直这样重复操作,直到构成一个完整的二叉树。

2. 如何输出正确顺序:根据图1可以知道根节点是45,也就是最小的。图2就是把第一遍找出来的45用无穷符号代替,然后又两两比较,直到根节点变为最小的,通过图1和图2对比可以看出第一遍找到的最小的是45,第二遍是73,,现在又将找出来的73用无穷符号代替,又重复上面的操作,直到对所有数据排完序。如下图所示

结语

树形选择排序还是比较好理解,图和文字结合就比较容易结合。

实习编辑:李欣容

稿件来源:深度学习与文旅应用实验室(DLETA)

(0)

相关推荐

  • 2021年9月计算机二级公共基础知识押题61-70

    61.下列叙述中正确的是( ) A)非完全二叉树可以采用顺序存储结构 B)有两个指针域的链表就是二叉链表 C)有的二叉树也能用顺序存储结构表示 D)顺序存储结构一定是线性结构 [解析]在计算机中,二叉 ...

  • 什么是冒泡排序?什么是选择排序?它们之间有什么区别?

    什么是冒泡排序?什么是选择排序?它们之间有什么区别?

  • Mysql中的索引

    Mysql中的索引

  • Python | 选择排序之简单选择排序

    引言 一听到选择排序的词第一反应都是要通过选择来排序,那么我们的第一反应是不是对的呢,我们接下来验证一下,了解一下它的定义.简单选择排序:最简单的选择方法是顺序扫描序列中的元素,记住遇到的最小元素(一 ...

  • 其它排序:简单选择、桶排序

    其它排序:简单选择.桶排序 这是我们算法正式文章系列的最后一篇文章了,关于排序的知识我们学习了很多,包括常见的冒泡和快排,也学习过了不太常见的简单插入和希尔排序.既然今天这是最后一篇文章,也是排序相关 ...

  • 让ecshop商品选择品牌时按拼音排序

    下面是修改方法: 1)如果你的ECSHOP数据库使用的是GBK字符集,那么很简单 打开 /includes/lib_common.php 文件 找到 $sql = 'SELECT brand_id, ...

  • python笔记17-字典按value排序

    前言 面试题:如何统计数组中出现次数最多的数据,按出现次数由大到小排序 这个排序看似简单,涉及到的基础知识点还是很多的,真正写起来并不容易 保存数据 1.首先应该提出队列里面有多少个数据,做去重处理, ...

  • appium+python自动化98-非select弹出选择框定位解决

    前言 遇到问题:document.getElementsByClassName(-)[0] is undefined 选择框如果是select标签的,可以直接用select专用的方法去定位点击操作.其 ...

  • Python|用“插入”也能简单排序

    引言 在排序这一个大家庭里,它的算法成员形形色色,多种多样,有"快速排序","归并排序","插入排序"等等基本排序算法.而今天,所要侧重讲解 ...

  • Python之父:如果你选择自学python,这三本书能节约你一半时间

    今天给大家推荐三本书,有两本是属于一个系列,即<Python核心编程>第二版和第三版,一本讲基础和一本讲进阶,非常适合Python的初学者和有一定基础的学习者.还有一本书适合所有想学Pyt ...

  • Python之父:如果你选择自学python,这3本书能节约你一大半时间

    今天给大家推荐三本书,有两本是属于一个系列,即<Python核心编程>第二版和第三版,一本讲基础和一本讲进阶,非常适合Python的初学者和有一定基础的学习者.还有一本书适合所有想学Pyt ...

  • Python中几种常见的排序算法?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...