算法排序专题:冒泡排序
从这篇文章开始,我们来完善在编程课程当中最重要的专题课程讲解,就是算法排序问题。可以这样理解,将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。我们通常有两类排序方式,分别是:
非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。
线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。
我们常见的排序有:冒泡排序、选择排序、快速排序、插入排序、希尔排序、归并排序、堆排序、计数排序、桶排序、基数排序这十大排序算法。后面的文章,我们会依次讲解,有需要的朋友可以关注哦!
开始我们今天的正式内容:冒泡排序
冒泡排序思想
基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。
直观表达,每一趟遍历,将一个最大的数移到序列末尾。
算法描述
比较相邻的元素,如果前一个比后一个大,交换之。
第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这
这样直到倒数第2个和最后1个,将最大的数移动到最后一位。
第二趟将第二大的数移动至倒数第二位
......
因此需要n-1趟;
动图实现,效果如下:
排序任务:
1、创建列表包含十个数据,每一项数据为1-10随机数,并且10个数据不重复;
2、绘制柱状图,如下:
3、通过动态图效果演示冒泡排序算法。
我们如何利用图形化编程工具来实现冒泡排序呢?我们一步一步来!
第一步:思考排序的方式,思考为什么冒泡排序能排列成功?
主要让大家多思考,看看有多少种方法能够实现,冒泡排序之所以能够成功,是因为每一遍排序都把最大的数放到最右边,所以第一遍机会把最大的放到最右边,每运行一遍,就会排序好一个最大的数据,不信大家就仔细观察哦!
第二步:我们需要动手制作一个随机数组,也就是一个随机列表,并给他填上不同的数值。代码如下:
创建角色1:
第三步:我们需要根据数列内容,进行柱状图绘制;
①创建角色数字柱:绘制10个角色状态,不一样长度的柱状图;
②绘制柱状图:
第四步:进行冒泡排序,绘制启动按钮,并用动态柱状图展示效果。
①创建冒泡排序按钮角色,绘制“冒泡排序”按钮
②进行动态排序,如下:
③子程序,动态绘制;
第五步:完成啦,看下最后的界面吧!
以上就是冒泡排序的全部讲解了,如果还不懂?那就关注我或者下方二维码,后面会有教学视频哦!