深入冒泡排序

冒泡排序——对于给定的一组元素集中,遍历元素使相邻的两个元素进行比较并按升序或者降序排列,重复上述操作直到没有相邻元素进行比较。

代码如下:

总共有n个元素,最开始从第0个元素到第n-1个元素两两之间进行比较,使得最小的元素被放在n-1的位置上,下一次便从0-n-2个元素间两两比较,使得最小的元素放在n-2的位置上...如此循环下去直到没有元素可以比较。

对于任意的元素集进行冒泡排序都能得到最终的结果,但是要一直比直到没得比的情况,如果存在不用比即整个元素集中有小段是有序的呢?于是便有了:


定义了一个sort变量来维护是否有过交换,因此整个冒泡排序的交换次数应该就是元素间两两无序的个数m,整个效率大概就是O(mxn)。往更极端的想,整个元素集被分为了两段,一段有序,一段无序,因此我们为何还要去管有序的呢?我们只需要去使无序变成有序即可:


我们只需要用last去指向无序的即可,而有序的则不在考虑的范围中...

冒泡排序的最好情况时间复杂度为:O(n)

                        最坏时间复杂度为:O(n²)

                        平均时间复杂度为:O(n²)

                                空间复杂度为:O(1)

                                            稳定性:稳定

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。