深入理解冒泡排序

>> 冒泡排序


冒泡排序可能非你所想。

冒泡排序的思路: 给定一个数组,每次循环出最大的数依次向后排,并将较小的数向前冒。
平均时间复杂度: O(n^2)
最好情况: O(n) 已经排好序
最坏情况: O(n^2) 倒叙的时候
空间复杂度: O(1) 没有占用额外的空间
稳定性: 稳定 排序前相等的两个数,排序后位置不变


: ) 冒泡排序值得注意的是:第一层循环并不参加比较,而仅仅是为了循环计数。
代码如下

在这里插入图片描述

代码解析:

一. 冒泡排序的第一层循环的i并不会参加排序运算,而仅仅是为了循环计数本身

二. 第一层循环循环一共length-1次,所以当for(int i=1… 那么 i<length ; 当 for (int i=0…那么 i<length-1

三. 第二层c循环的循环数受到第一层循环i的影响,它循环多少次呢?

理解:
  • 冒泡排序先找打最大的,放到最右端。

可以这样理解,你不是要排序length个数嘛? 冒泡冒泡,就是要将length个数,挨个儿冒出来,一共length个数,你也应该知道每次咱只能冒一个,那么也就是说要冒length次,真是length次嘛?当然,想法是这样,只是现实的情况是,当你将length-1个都冒出来之后,最后一个难道还需要冒吗?大不必要,也没实际效果,你可以理解为,最后一个被挤出来了。


另外一种写法在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值