Scratch——链表和冒泡排序算法

实现方式
冒泡排序制作思路:

1) 背景图:既然是冒泡,那就加个海底的冒泡的背景图。

2) 火龙角色:为了增加趣味性加入了一个火龙角色,开始时清空数据,然后随机填充15个数字,接着进行排序。火龙负责说话,提示当前系统在做什么。

3) 数组(链表)变量一个:Data

4) 设置三个变量:循环次数,当前位置,临时变量。
在这里插入图片描述
变量和链表。

5) 清空数据:程序开始时,清空链表中的数据。

a. 火龙提示“开始清空数据。”

b. 使用链表删除指令,可以删除链表指定位置条数条目,也可以全部删除或者删除尾部的数据。因此如果简单,可以直接全部删除。不过为了体现操作过程,我们使用了重复执行,读取条目总数,如果条目总数>1就删除第一条,然后等待0.1秒。这样就能看见系统依次删除链表中的数据。

c. 火龙提示,“数据已清空”。
在这里插入图片描述
清空,填充数据。

6) 随机填充数据:

a. 火龙报“开始随机填充数据”

b. 强制加了一条最小的数0到链表;

c. 然后执行14次,在1-999中间随机选择一个数字,填充到链表中。填充中间未等待,因此一会填充好了15个数字。
在这里插入图片描述
初始化后开始冒泡)

7) 冒泡排序:大循环,逐个比较。

a. 设置当前位置变量为15,从最后一个开始,和前面一个数相比较,如果比前面的数据大,就要往上冒泡,否则就不冒泡。

b. 设置循环次数:为当前位置减1,即第一次大循环,总最下面的第15个数字开始,一直往上比较,比较14次。15和14比,14和13比,最后是2和1比较。第一次将15个数字中,最大的数据冒到最上面,即位置1。第一次大循环结束。

c. 因为第一个数字已经是最大数,因此只要对2-15的数字进行第二轮排序即可。这样第二个大循环,重复比较的循环次数就可以减少1。因此第二次比较了13次,15和14比,14和13比,最后是3和2比较。即14个数字中找最大。第二次大循环结束。
在这里插入图片描述
大循环。

d. 依次类推,每次都找一个最大的,搬到最上面去。

e. P和P-1位置的数字相比较时,如果P> P-1,即下面的数字大,就要交换。因此先将P-1存在临时变量里面;然后P挪到P-1,然后临时变量挪回P,实现P往上冒一格。火龙报“需要冒泡”或者“不需要冒泡”。

f. 冒泡比较后,等待0.5秒,这样能够看见在比较,冒泡,交换数字。

g. 每个大循环之间等待2秒,让火龙报“下一个大循环开始。”
在这里插入图片描述
转自:http://www.china-scratch.com/news/1851

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值