数据结构和算法-交换排序中的冒泡排序(过程 代码实现 算法效率 稳定性 适用链表?)

总览

在这里插入图片描述

冒泡排序

冒泡?

自然界的冒泡
在这里插入图片描述

啥是冒泡排序

在这里插入图片描述

冒泡排序过程

此时序列要求递增的
首先比较27和49,发现符号递增序列,小的在左边
在这里插入图片描述
再比较13和27,此时小的依然在左边,符号
在这里插入图片描述
再比较76和13,此时小的在右边,交换
在这里插入图片描述
此时13已经交换到76的位置了,再比较97和13,小的在右边,交换
在这里插入图片描述
此时13交换到97的位置了,再比较65和13,小的在右边,交换
在这里插入图片描述
此时13交换到65的位置了,比较38和13,小的在右边,交换
在这里插入图片描述
此时13交换到38的位置了,比较49和13,小的在右边,交换
在这里插入图片描述
第一趟冒泡排序结果
在这里插入图片描述
开始第二趟,和之前步骤一样
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时不需要和之前冒泡出来的元素对比
在这里插入图片描述
第二趟结果
在这里插入图片描述
第三趟即后面都类似
每趟都会从剩下的没确定位置的找到最小的排到之前已确定位置的元素后面
注意第四趟如果有相等的比较则不交换,保证稳定性
在这里插入图片描述
注意在第五趟时候,此时没有交换,可以认为已经有序
在这里插入图片描述

算法实现

flag标记是否交换,如果没有交换则已经排序好了
总共n次循环,从0开始,每次循环
在这里插入图片描述

算法性能分析

有序的还需比对n次,都没交换才会得到这是有序的信息
最坏情况每次比对所比对的序列都是逆序的
交换元素一次需要比对元素三次
在这里插入图片描述

稳定性

稳定的,在相等时不做交换

冒泡排序是否适用于链表

也适用的
将当前链表指针与其后面的指针的元素比较,如果当前的大于后面的,那么就交换
在这里插入图片描述
此时49和后面的比较,不需要交换
在这里插入图片描述
此时69也不需要与后面的交换
在这里插入图片描述
97需要与后面的交换
在这里插入图片描述还需要交换
在这里插入图片描述
依然需要交换
在这里插入图片描述
依然要交换
在这里插入图片描述
依然要交换
在这里插入图片描述
此时第一趟结束,然后继续这样从头开始

小结

在这里插入图片描述

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看星猩的柴狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值