算法,在编程中是一定会有的,这是编程的核心主要的部分。之前我们了解过冒泡排序算法,今天我们也是接触的排序算法,叫选择排序算法。以scratch编程来实现数字的选择排序算法:
scratch选择排序算法案例效果图
什么是选择排序?
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。
scratch选择排序整个分解的过程
数据列表添加的数据是:12、34、56、2、90五个数字。
要达到以上降序排序,我们可以把整个过程分解为以下步骤:
第一轮:找到(12、34、56、2、90)序列中的最大值90,并把90和位置1上的数据12交换,得到如下新的序列。90、34、56、2、
12;
第二轮: 90已经在正确的位置了,所以接下来只要找到(34、56、2、12)排序中的最大值56,并把56和位置2上的数据34交换,得到如下新的序列。90、56、34、2、12;
第三轮: 90和56已经在正确的位置了,所以接下来只要找到(34、2、12)中的最大值34,,34已经是在第3的位置了,所以不用交换位置,得到如下新的序列。90、56、34、2、12;
第四轮: 90和56和34已经在正确的位置了,所以接下来只要找到(2、12)列中的最大值12,并把12和位置4上的数据2交换,得到如下新的序列。90、56、34、12、2;
我们发现: 5个数据排序,需要经过4轮,每轮都是一个找最值 和交换的素(或过程,每一轮的区别只是数据范围变小了。这就是选择排序的基本过程。
接下来我们用scratch选择排序算法分步编程,来实现数字的降序排序
(1)首先需要建立一个“数据”列表,用来保存初始数据和交换后的数据。然元将原始数据(12、34、56、2、90)输入列表。
(2)然后我们需要找到(12、34、56、2、90)数据序列中的最大值,并和位置1的数据交换。需要设立以下四个变量。max:最大值; i:表示最大值的初始假设位置,i=1; k:保存最大值所在位置; j:遍历变量。
内嵌循环找出最大值,并交换位置
找到5个数字中的最大值,并记录最大值所在位置。这换两个变量的值,需要设立一个中间变量temp作为桥梁,这里我们需妥将max和第i个位置的数据交换。
(3)接下来,我们就是需要依次对(56、34、2、12)(34、2、12)(12、2) 3组数据序列重复操作。比较发现,唯一改变的就是i不断地增加1,重复4次(5个数据重复5-1=4次)。
外嵌循环是需要比较的轮数
选择排序总结:
(1)若有n个数据,则需要进行n-1轮排序。
(2)每轮就是一个找最值和交换的过程。
(3)每轮只有一次交换。
(4)数据范围越来越小。
scratch算法相关重要知识点集合:
scratch枚举算法
scratch冒泡排序算法
scratch递归算法