3.1 交换排序算法之冒泡排序

0、交换排序
基本思想 : 两两比较元素,发现倒序即交换
两种基本的实现算法:

  • 冒泡排序
  • 快速排序


1、冒泡排序
基本思想 :从表的某一端开始,逐个比较相邻的两个元素,发现倒序即交换。

[标注] 这里的叙述都是从后往前逐个比较,相邻两个倒序就交换形如”冒泡泡”,故称为冒泡排序。


语言很苍白,用图例来解决
对序列 Arr[] ={18, 6, 2, 8, 6}进行冒泡排序演示
这里写图片描述
上面图例,两两之间比较需要交换的我画出来了,没交换的省略。

[注] 上面的序列是无序的,进行了多次两两之间的交换,那么如果序列本身就是有序的,那么按照上面的从后往前做了无效的两两比较,效率较低,如何解决?
Solution : 设置一个”标记”就ok了


代码:


冒泡算法分析:(有标记位改进的冒泡)

1 . 时间复杂度: 受序列表初始状态影响

  • 正序情况,比较元素的次数是 n-1 ,交换的次数为0, O(n)
  • 逆序情况,比较和交换的此时为 n(n-1)/2 , O(n2)
  • 一般情况,取平均值 , O(n2)

2 . 稳定性 : 稳定排序

3 . 空间性能 : 1个辅助空间


最后的大白话:

猜你喜欢

转载自blog.csdn.net/zxj820/article/details/80466494