数据结构及算法

打个赌,用得最多的冒泡排序肯定少了个关键点

2021-04-13  本文已影响0人  Code综艺圈

前言

冒泡排序应该是很多小伙伴的最爱,简单、直接、好理解;回顾以往参与和阅读的项目,凡是牵涉自定义排序的算法,很大一部分都在用冒泡,其中很多都忽略了一个关键点;来,咱们细细品...

正文

1. 冒泡排序算法思想

冒泡排序(Bubble Sort)是属于交换排序的一种,顾名思义,就是一个元素,依次和相邻元素进行比较(升序或降序),然后进行交换,这个过程就称为冒泡。

算法思想

2. 冒泡排序算法实现与解析

代码实现(升序):

实现

运行效果如下:

结果

步骤解析(升序):

步骤

上图步骤说明:

上图中分三趟排序,每一趟的交换过程根据箭头方向进行,其中每一行中的绿色方框代表的是当趟排序需要交互的数据。

第一趟中,对原始数据array开始遍历,这里使用的是从往后的方式;

第二趟排序,接着第一趟的排序结果进行冒泡排序

第三趟排序,接着第二趟排序结果进行冒泡排序

3. 冒泡排序算法性能分析

时间复杂度

时间复杂度最坏情况就是待排序数据和要的结果完全逆序,则需要的比较的次数为:(n-1)+(n-2)+(n-3)+...+1,则最坏的时间复杂度为O(n2)。最好的时间复杂度就是待排序数据和要的结果完全一致,则比较n-1次即可,则最好的时间复杂度为O(n);所以最后的平均时间复杂度为O(n2)。

空间复杂度 在算法核心部分只采用了固定的几个中间变量(i,j,lengh,bChange),所以算法过程中消耗的内存是一个常量,则空间复杂度为O(1)

稳定性 由于在排序过程中是通过大于符号或小于符号进行比较,当等于时是不进行位置交换的,所以此算法是稳定的

综上所述,冒泡排序的时间复杂度为O(n2),空间复杂度为O(1),是稳定算法;

总结

冒泡排序关键点一定要注意哦:

从上面可以看出,冒泡排序虽然简单,但需要依次遍历元素进行比较,当数据元素过多时,比较次数就越多;那有没有减少比较次数的解决方案呢;答案当然是肯定的,下期一起来聊聊快速排序

感谢小伙伴的:点赞收藏评论,下期继续~~~

一个被程序搞丑的帅小伙,关注"Code综艺圈",跟我一起学~~~

上一篇 下一篇

猜你喜欢

热点阅读