趣学妙用Scratch编程27 妙用篇(十五) 来给列表排个序
2023-06-25 08:55:36
知:关于排序那些事儿
我们已经做了不少实用性的小工具,本节我们来聊点“抽象”,但又是一名专业的软件工程师必须熟悉的概念——“排序”。 开始之前,先来向你推荐一本书,准确地说是一套书,它的名字叫《计算机程序设计艺术》,这套书是所有专业程序员书架上的“圣经”。它有多厉害呢?微软前董事长比尔盖茨曾经对全世界说过—— “如果你完完整整读完了《计算机程序设计艺术》,请立刻给我发一份简历。” 也就是说,你读懂了这套书,直接就可以到世界上最大的软件公司之一去面试了! 当然,这套书可不是推荐你现在读的,我只是希望你记住这套书的名字,等到有朝一日机缘成熟的时候去翻开它。那么这套书和我们所说的“排序”有什么关系呢?《计算机程序设计艺术》第三卷就叫“排序与查找(Sorting and Searching)”,现在你知道排序对于掌握编程技能提升有多重要了吧?我们先不必过分深入地学习概念,而是结合具体问题,直观地体会一下排序的执行过程:老师给小猫出了一道题,要求在列表 1 中生成 5 个在 1~ 99 范围内 的随机整数,列表2为空,小猫说“5秒钟后开始排序”,然后将列表1中的数字按照从大到小的顺序依次移到列表 2 中(注意是移动,不是复制),然后说“处理完啦”,程序结束。例如:在列表 1 中随机生成的整数依次是 12,3,1,13,17,在处理之后列表 2 中的整数依次是17,13,12,3,1。
思:程序设计
经过简短的思考你就会发现,这道题目其它都不难,主要解决的问题就是怎么从列表1中每次找出最大的数字,然后把这个数字添加到列表2,再删除这个最大项。这样重复5次,就能将所有数字依次移动到列表2当中去。那么怎么找到列表中最大值?当然得用到重复执行,用一个刚开始设置为0的“最大值”变量与列表中的每一项依次比较,如果列表项比它大,就把这个编号记录下来,并把变量“最大值”设置为当前列表项,再与列表下一次比较。等到列表中所有项都比完了(列表中有多少项,就比较多少次),这个“最大值”变量中保存的就是列表1最大值,我们把它添加到列表2,再根据记录的编号删除掉列表1中的这一项,就实现了移动效果。根据题目要求,重复5次就实现了列表1所有项依次移动到列表2。
行:编程实现
1、新建项目,这次我们的舞台布置很简单,保留空白背景,添加列表1、列表2显示到舞台上,再添加“列表序号”、“最大值”、“最大值序号”三个变量。为了直观,可以将它们也保留在舞台上显示:



微信扫码关注
抖音扫码关注