Scratch3.0编程小课堂31(算法题:插入排序)
今天我们用scratch来做一道算法题:插入排序。
题目:输入任意5个数,使用插入排序法对它们进行从小到大的排序;
角色:小狗;
知识点:插入排序,列表(链表),循环变量,循环嵌套,侦测;
插入排序法的原理:
首先用数列中的第二个数与第一个数比较,如果比第一个数大,那就不管他;如果比第一个数小,将第一个数往后退一步,将第二个数插入第一个数去。
然后用数列中的第三个数与已是有序的数据比较,如果比第二个数大,那就不管它;如果比第二个数小,那就将第二个数退一个位置,让第三个数和第一个数比较,如果第三个数比第一个数大,那么将第三个数插入到第二个数的位置上,如果第三个数比第一个数小,那么将第一个数后退一步,将第三个数插入到第一个数的位置上,依次类推……最终完成全部数列的排序;
一、准备工作
1、角色:角色库选择“动物”类;
2、新建一个列表(链表),命名为“数列”;
3、新建两个循环变量,分别命名为“i”、“j”,并在舞台上显示变量;
一、编辑脚本
1、列表与变量初始化:
清空列表,循环变量i初始化赋值为1;
2、对5个数进行排序,重复执行4次;
3、输入需要排序的数:使用“侦测”的“询问”代码实现数据的逐个输入,使用两个“连接”模块把文字和输入数值连接;
3、列表赋值:把“回答”输入的数赋值给列表;
4、循环变量j赋值:给变量j赋值为i-1;
5、循环判断条件:用一个逻辑运算“或”连接两个条件,当前输入的数大于数列中的数或者变量j小于1;
6、内循环:如果当前输入的数大于数列当前的数,直接追加到最后,否则要逐一判断确定其插入的位置;
二、完整脚本
想一想,怎么样能实现让数列从大到小排序呢?
下一篇:数据结构链表的基本操作