【面试:基础篇02:冒泡排序】

【面试:基础篇02:冒泡排序】

00.前言

有任何问题还请指出,感谢各位大佬。

01.介绍

冒泡排序顾名思义是一种排序算法 与相邻元素比较 然后交换 因为没一趟的最大/最小值 最终会排序到当前趟的最后位置 所以形象的称为冒泡排序,是排序算法中比较基础的一种,这就意味着我们必须掌握。

02.案例推理

对本数列 {5,2,7,4,1,3,8,9} 进行冒泡排序 顺序从小到大
第一趟
2 5 4 1 3 7 8 9,比较了7次,确定了9是当前趟最后位
第二趟
2 4 1 3 5 7 8 9,比较了6次,确定了8是当前趟最后位
第三趟
2 1 3 4 5 7 8 9,比较了5次,确定了7是当前趟最后位
第四趟
1 2 3 4 5 7 8 9,比较了4次,确定了5是当前趟最后位
第五趟
1 2 3 4 5 7 8 9,比较了3次,确定了4是当前趟最后位
第六趟
1 2 3 4 5 7 8 9,比较了2次,确定了3是当前趟最后位
第七趟
1 2 3 4 5 7 8 9,比较了1次,确定了2是当前趟最后位

完成排序

03.这个案例告诉了我们什么

第一:我们发现了 8个元素 需要7趟排序。
第二:我们发现了 每趟排序只需要比较当前趟没有确定的元素 确定的元素无需比较,即每趟只需比较 元素个数-当前趟数 例如第三趟我们只需要比较 8-3次 因为前两趟已经确定两个值 我们只需要在剩下六个中比较五次 就可以确定第三趟的极值。
第三:我们发现了第四趟就已经排序完成了,但仍然又比较了三趟,这是我们的优化点之一,优化趟数。
第四:我们发现了每趟的次数也可以优化,例如第二趟我们比较了六次,但其实在第一趟比较时就已经确定了7 8 9三个最大值,所以我们其实只用比较剩下5个元素,也就是只需要比较四次,因为我们每趟的次数也减少,所以我们最终的趟数也会随之减少。

04.算法1 无优化

代码

public static void main(String[] args) {
   
    int[] a = {
   5,2,7,4,1,3,8,9};
    int len = a.length;
    for(int i=0;i<len-1;i++){
   
        int cnt=0;
        System.out.println("第"+(i+1)+"趟");
        for (int j=0;j
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

I cream

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

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

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

打赏作者

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

抵扣说明:

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

余额充值