Scratch 选择排序算法
选择排序(Selection sort)是一种简单直观的排序算法。
算法思想:
第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。
(图来源CSDN博主bluesliuf)
选择排序算法在很多编程语言中都是比较经典的,本次分享的是使用Scratch图形化编程语言来实现。
实现方法:
第一趟:从10个数据中找出最大数与第一个数据进行交换;
第二趟:从剩下的9个数据中找出最大数与第二个数据进行交换;
以此类推……
第i趟:从n-i+1个数据中找出最大数与第i个数据进行交换,直到所有的数都按照从小到大的顺序进行排序。
首先,创建一个数据列表,并随机生成10个数据存储进列表中。一定要使用“删除数据列表的全部项目”积木来使“数据列表”初始为空列表,不然每次运行都会增加10个数据项。
接着,创建两个变量i 和 j分别用于控制外层循环和内层循环,并将初始值分别设置为1和2。创建一个max变量来存储数据比较过程中的大数,将变量max的初始值设置为数据列表的第一个数据项。
①将列表的第一个数据与剩下的数据一一进行比较,并将较大的数存储在变量max里面。
②每比较完一趟,就将大的数插入到列表的第一项中
上面的①②操作只是完成了一趟数据比较,而我们需要做的是将所有的数据进行排序,所以还需要再比较9趟,也就是可以重复数据列表的长度次数。
最后的运行效果如下,数据进行升序排序。
扩展:若想要将数据进行降序排序,该修改哪两处呢?