Scratch算法讲解01-Scratch选择排序 少儿编程Scratch常见排序算法案例分析讲解

Posted 小兔子编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scratch算法讲解01-Scratch选择排序 少儿编程Scratch常见排序算法案例分析讲解相关的知识,希望对你有一定的参考价值。

scratch选择排序

一、案例演示

Scratch选择排序 

二、案例介绍

        什么是选择排序呢,在讲排序之前,要先跟小朋友们讲一下算法;什么是算法,通俗一点来说就是解决一个问题的一整套的计算方法或者完整的指令。对于小朋友们来说,解决一个数学应用题这就是一个小小的算法

        而所谓的排序算法:就是针对一串无序的数字或者无序的列表,如何使其按照特定的要求(从小到大或者从大到小)的方式进行排序的一整套完整的计算指令。

        选择排序:是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,找到之后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

三、动图演示

(图片来源于网络)

四、案例分析

1、准备工作

        事先建立一个列表用来存放要排序的数据,然后建立几个变量:数(存放随机产生的数字)、min(用来存放最小数对应项编号)、temp(临时变量,用来交换两项的值)、i和j(两个索引,用来遍历列表中的每一个元素)

2、程序分析

1.初始列表

        在进行排序之前,我们首先要有一串无序的数字,这里我们通过Scratch的列表来进行实现,那如何给列表中添加一串随机的数字呢,这时候很多小朋友都能想到,要用我们的随机数积木

        通过上述积木的使用确实是可以产生在指定区间的随机数,但是有一点小朋友们要认真思考一下,假设我们要产生10个在1-30之间的随机数字,如果只使用上面的积木加上有限循环重复10次这样产生的10个随机数有什么特点呢,看下面的图片:

        小朋友们有没有发现什么问题,是不是有可能出现重复的元素,而我们一般是针对不重复的无序的元素进行排序的(当然我们今天学的即使是重复的也会进行排序);那我们就要想办法怎样让产生的随机数是不会重复出现。

        所以为了达到我们的要求,就需要在将数字加入到列表之前进行判断列表里面是否已经包含了这个元素,如果包含了就重新产生新的数字直到新的数字没在列表里面,在将这个数字加入到列表里面

2.进行排序

        在上面的数据产生了之后就需要对列表进行我们今天要讲的选择排序,开始的时候将列表中的第一项作为最小值,然后从当前列表项开始依次从后面的每一项中找到最小的那一项,如果找到之后和当前项的值进行交换,接着从当前项的下一项再继续重复上面的动作,直到列表全部数据都排好为止。所以整个案例,为了小朋友们能够理解的更清楚,小兔子老师这里将案例分成三个模块:开始程序、初始列表(产生不重复无序列表)、进行排序;具体分析如下:

开始程序

  1. 开始

  2. 调用初始列表积木

  3. 说正在进行选择排序....请观察列表值的变化...

  4. 调用进行排序积木

初始列表(自定义积木带3个参数区间最小值和最大值及个数)

  1. 自定义积木

  2. 清空列表

  3. 将数设为最小值和最大值之间的随机数

  4. 一直重复执行判断列表中是否包含这个数

  5. 如果没有包含将这个数加入列表

  6. 否则将这个数重新设为最小值和最大值之间的随机数

  7. 重复执行num次数第3-6步

进行排序(自定义积木)

  1. 自定义积木

  2. 将i设为1(第一轮开始位置)

  3. 将min设为i(最小值设为当前轮次的第1项)

  4. 将j设为i+1(从当前轮次的第2项开始比较)

  5. 判断第j项的值是否小于第min项

  6. 如果是将min设为j

  7. j+1

  8. 重复执行列表的项目数-i次第5-7步(每一轮需要比较的次数)

  9. 将列表中第min项对应的值和列表中第i项对应的值进行交换(找到最小项放到列表第一项)

  10. 然后i+1(继续下一轮)

  11. 重复执行列表项目数-1次第3-10步

3、流程图绘制

五、程序编写

六、案例总结

此案例难度系数4,属于Scratch高级编程,虽然是高阶编程范畴,但是选择排序相对而言还是比较好理解的;综合考查说话、随机数、无限循环(条件循环)、条件判断、变量定义和使用、列表定义和使用、自定义积木的定义和调用等积木的使用;难点在于:

  • 如何获取产生无序不重复的列表

  • 如何理解选择排序的工作原理

  • 如何实现一轮排序后找到最小值或者最大值

  • 如何实现整个列表的排序功能

  • 充分掌嵌套循环、列表和自定义积木的使用

方式方法有多种,小兔子老师只是使用了其中一种,小朋友们只要能实现题目要求即可

以上是关于Scratch算法讲解01-Scratch选择排序 少儿编程Scratch常见排序算法案例分析讲解的主要内容,如果未能解决你的问题,请参考以下文章

Scratch算法讲解04-Scratch快速排序 少儿编程Scratch常见排序算法案例分析讲解

Scratch算法讲解Scratch冒泡排序 少儿编程Scratch常见排序算法案例分析讲解二

Scratch算法讲解Scratch插入排序 少儿编程Scratch常见排序算法案例分析讲解三

Scratch 选择排序算法

Scratch十大经典排序算法之选择排序

快速排序算法scratch柱形图模拟演示之说明