冒泡排序算法与改进的冒泡排序算法

活动地址CSDN21天学习挑战赛

目录

一、冒泡排序原理

二、冒泡排序流程  

三、实例

四、冒泡排序的改进

五、改进的冒泡排序时间性能分析

一、冒泡排序原理

    对存放在数组的数据,按从前往后的方向进行多次扫描,当发现两个相邻的数据排序与要求的排序不相符时交换这两个数的位置,以从小到大的排序要求为例,这样较小的数据就会冒上来(称为冒泡排序)。

二、冒泡排序流程

 1、流程:

    原始序列: 2   1    0   12    8   6   9   4

i=0  第一趟排序:1   0    2     8    6    9   4   12     比较次数:7次

i=1 第二趟排序: 0   1    2     6    8    4   9   12     比较次数:6次

i=2 第三趟排序:   0    1   2     6    4     8   9   12     比较次数:5次

i=3 第四趟排序:   0    1   2     4     6    8   9   12     比较次数:4次

i=4 第五趟排序:0    1   2     4     6    8   9   12     比较次数:3次

i=5 第六趟排序:  0    1   2     4     6    8   9   12       比较次数:2次

i=6 第七趟排序:  0    1   2     4     6    8   9   12       比较次数:1次

2、思考:

总共进行几趟排序、比较次数怎么表示?

1)总共进行n-1趟排序;(数组中共有n个数)

2)第一趟排序后最大的数“沉底”,第二趟排序数组中次大的数“沉底”..........;每趟排序都会减少一个待排序的数,所以比较次数为n-i-1。(数组中共有n个数)

三、实例

    已知数组a[8]={ 2   1    0   12    8   6   9   4};使用冒泡排序按从小到大顺序输出,并输出每趟排序后的结果

1、代码:

  

2、运行结果:

四、冒泡排序的改进

1、改进冒泡算法的说明:

从举例的结果可以看出,在进行完第四次排序后已经有序,所以不必继续进行下面的排序(继续进行排序,只进行数值的比较而数据不会移动)。改进的冒泡排序算法性能更好。

2、改进的冒泡排序代码:

3、运行结果 :

 

从运行结果得到,排序只进行了四趟(第四趟排序结束后,数组中的数据元素已经有序)

 五、改进的冒泡排序时间性能分析

 最好情况(正序)  例如: 1 2 3 4 5

 比较次数:n-1次

 移动次数:0

 时间复杂度:O(n)

 最坏情况(逆序) 例如:  5 4 3 2 1

 比较次数:n*(n-1)/2

 时间复杂度:O(n^2)

 移动次数:3*n*(n-1)/2

 

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值