一、冒泡排序的概念
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
二、冒泡排序的算法原理
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
三、冒泡排序的视频演示
四、冒泡排序的步骤解析
一串未排序的数字(10,5,16,25,3,6,82,13),采用冒泡排序从小到大进行排序的步骤解析:(红色字体表示交换的数值)
10,5,16,25,3,6,82,13(原数列)
5,10,16,25,3,6,82,13
5,10,16,3,25,6,82,13
5,10,16,3,6,25,82,13
5,10,16,3,6,25,13,82(第一轮结束,将最大值的82放在了最后一位)
5,10,3,16,6,25,13,82
5,10,3,6,16,25,13,82
5,10,3,6,16,13,25,82(第二轮结束,将第二大的25放在了倒数第二位)
5,3,10,6,16,13,25,82
5,3,6,10,16,13,25,82
5,3,6,10,13,16,25,82(第三轮结束,将第三大的16放在了倒数第三位)
3,5,6,10,13,16,25,82(第四轮结束)
五、用Scratch实现冒泡排序
我们要如何用Scratch来实现从左下图变成右下图的效果呢?
-
第一步:先创建一个“冒泡排序”的列表
-
第二步:插入乱序的数列(例如:10,5,16,25,3,6,82,13)
-
第三步:从第一个数据开始,对上一个数据和下一个数据进行比较,若满足,不需要交换位置,若不满足,需要交换位置
解析:为什么需要“中介”的变量呢?是因为,如果我们没有“中介”的变量,是无法进行两个数据的交换的,所以得运用“中介”的变量,将其中的一个数据先存储进去,然后才能进行交换操作。
-
第四步:内层循环的循环次数每循环完一次,循环次数减一
解析:对于循环的次数,我们在上面演示的时候,发现每一轮排完的时候,最大值已经固定在数列的最后方,所以每次循环完,循环的次数减一,代码我们是采用了变量i,变量i的作用就是让其每次循环完一次,变量增加1,进而循环的次数=列表项目数-i。
-
第五步:外层循环的次数
解析:为什么还需要外层循环呢?是因为我们从第一项对比到最后一项,又继续从头开始遍历,所以,重复执行的次数是列表的项目数次。变量j的作用是让其不断的更新对比的项数,例如对比第j项和第j+1项的意思就是上一项和下一项做比较,比较完了之后,变量j就加1。
完整代码:
那么这样就完成Scratch中的冒泡排序啦!