算法排序专题:冒泡排序

算法排序专题:冒泡排序_第1张图片

Scratch 3.0 冒泡排序动画效果设计

从这篇文章开始,我们来完善在编程课程当中最重要的专题课程讲解,就是算法排序问题。可以这样理解,将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。我们通常有两类排序方式,分别是:

非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。

线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。

我们常见的排序有:冒泡排序、选择排序、快速排序、插入排序、希尔排序、归并排序、堆排序、计数排序、桶排序、基数排序这十大排序算法。后面的文章,我们会依次讲解,有需要的朋友可以关注哦!


开始我们今天的正式内容:冒泡排序

冒泡排序思想

  • 基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。

  • 直观表达,每一趟遍历,将一个最大的数移到序列末尾。

算法描述

  1. 比较相邻的元素,如果前一个比后一个大,交换之。

  2. 第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这

  3. 这样直到倒数第2个和最后1个,将最大的数移动到最后一位。

  4. 第二趟将第二大的数移动至倒数第二位
    ......
    因此需要n-1趟;
    动图实现,效果如下:

    算法排序专题:冒泡排序_第2张图片

排序任务

1、创建列表包含十个数据,每一项数据为1-10随机数,并且10个数据不重复;

2、绘制柱状图,如下:

算法排序专题:冒泡排序_第3张图片

3、通过动态图效果演示冒泡排序算法。

算法排序专题:冒泡排序_第4张图片

我们如何利用图形化编程工具来实现冒泡排序呢?我们一步一步来!

第一步:思考排序的方式,思考为什么冒泡排序能排列成功?

主要让大家多思考,看看有多少种方法能够实现,冒泡排序之所以能够成功,是因为每一遍排序都把最大的数放到最右边,所以第一遍机会把最大的放到最右边,每运行一遍,就会排序好一个最大的数据,不信大家就仔细观察哦!

算法排序专题:冒泡排序_第5张图片

第二步:我们需要动手制作一个随机数组,也就是一个随机列表,并给他填上不同的数值。代码如下:

创建角色1:

算法排序专题:冒泡排序_第6张图片

第三步:我们需要根据数列内容,进行柱状图绘制;

①创建角色数字柱:绘制10个角色状态,不一样长度的柱状图;

算法排序专题:冒泡排序_第7张图片

算法排序专题:冒泡排序_第8张图片

②绘制柱状图:

算法排序专题:冒泡排序_第9张图片

第四步:进行冒泡排序,绘制启动按钮,并用动态柱状图展示效果。

①创建冒泡排序按钮角色,绘制“冒泡排序”按钮

算法排序专题:冒泡排序_第10张图片

②进行动态排序,如下:

算法排序专题:冒泡排序_第11张图片

③子程序,动态绘制;

算法排序专题:冒泡排序_第12张图片

第五步:完成啦,看下最后的界面吧!

算法排序专题:冒泡排序_第13张图片

以上就是冒泡排序的全部讲解了,如果还不懂?那就关注我或者下方二维码,后面会有教学视频哦!

你可能感兴趣的:(算法,排序算法,scratch)