vlambda博客
学习文章列表

算法排序专题:冒泡排序


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

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

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

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


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

冒泡排序思想

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

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

算法描述

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

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

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

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


    算法排序专题:冒泡排序


排序任务:

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

2、绘制柱状图,如下:

算法排序专题:冒泡排序

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

算法排序专题:冒泡排序

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

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

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

算法排序专题:冒泡排序

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

创建角色1:

算法排序专题:冒泡排序

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

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

算法排序专题:冒泡排序

算法排序专题:冒泡排序

②绘制柱状图:

算法排序专题:冒泡排序

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

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

算法排序专题:冒泡排序

②进行动态排序,如下:

算法排序专题:冒泡排序

③子程序,动态绘制;

算法排序专题:冒泡排序

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

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