vlambda博客
学习文章列表

Scratch 选择排序算法

选择排序(Selection sort)是一种简单直观的排序算法。

算法思想:

第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。


(图来源CSDN博主bluesliuf)


选择排序算法在很多编程语言中都是比较经典的,本次分享的是使用Scratch图形化编程语言来实现。

实现方法:

第一趟:从10个数据中找出最大数与第一个数据进行交换;

第二趟:从剩下的9个数据中找出最大数与第二个数据进行交换;

以此类推……

第i趟:从n-i+1个数据中找出最大数与第i个数据进行交换,直到所有的数都按照从小到大的顺序进行排序。


首先,创建一个数据列表,并随机生成10个数据存储进列表中。一定要使用“删除数据列表的全部项目”积木来使“数据列表”初始为空列表,不然每次运行都会增加10个数据项。

Scratch 选择排序算法

接着,创建两个变量i 和 j分别用于控制外层循环和内层循环,并将初始值分别设置为1和2。创建一个max变量来存储数据比较过程中的大数,将变量max的初始值设置为数据列表的第一个数据项。

Scratch 选择排序算法


①将列表的第一个数据与剩下的数据一一进行比较,并将较大的数存储在变量max里面。


Scratch 选择排序算法

②每比较完一趟,就将大的数插入到列表的第一项中

Scratch 选择排序算法

上面的①②操作只是完成了一趟数据比较,而我们需要做的是将所有的数据进行排序,所以还需要再比较9趟,也就是可以重复数据列表的长度次数。


最后的运行效果如下,数据进行升序排序。

扩展:若想要将数据进行降序排序,该修改哪两处呢?