冒泡排序讲解及代码实现

1.冒泡排序

冒泡排序是一种排序算法,能够将一个无序数组变成一个从小到大的有序数组,冒泡排序是一个稳定排序,稳定排序是指如果值相同的元素在排序后仍然保持着排序前的顺序,则这样的排序算法是稳定排序。下边我们来来冒泡排序的具体实现

1.1冒泡排序的实现过程

冒泡需要执行数组长度减1次排序,每次排序将最大的数放到最后,给定一个原始数组[6,4,5,2,1]我们来通过下面动画来了解它是怎么每次将最大的一个数放到最后。
请添加图片描述
从上图中我们看到一共进行了4次排序,也就是数组长度减1次排序,每次排序相邻的两个数进行比较如果前一个数大于后一个数他们交换位子,如果小于位子不变,下面我们对这4次排序进行拆分
第一次:
第一次是对原始数组进行排序,原始数组为[6,4,5,2,1],首先6和4比较,6大于4,6和4交换位子,然后6再和5比较,6大于5,6和5交换位子,6再和2比较,6大于2,6和2交换位子,6再和1比较,6大于1,6和1交换位子。如下图所示就是数组的第一次交换
在这里插入图片描述
第二次
第二次只需要再从[4,5,2,1]选出最大值即可,首先4和5进行比较,4小于5,位子不变,5和2比较,5大于2,5和2交换位子,5再和1比较,5大于1,5和1交换位子,第二次排序结果如下图
在这里插入图片描述
第三次
第三次只需再从[4,2,1]选出最大值即可。首先4和2进行比较,4大于2,4和2位子交换,4再和1比较,4大于1,4和1进行位子交换
,排序交过如下图
在这里插入图片描述
第四次
第四次只需再从[2,1]中选出最大值即可,首先2和1进行比较,2大于1,2和1进行交换,排序结果如下图。
在这里插入图片描述
至此4次排序全部结束,数组变成了有序数组。

1.2时间复杂度和空间复杂度

从上面我们可以看出冒泡排序需要进行n-1+n-2+…+1次比较,所以他的时间复杂度为o(n²),空间没有用多余的空间所以空间复杂度o(1)。

1.3代码实现

public class maopao {
    public static void main(String[] args) {
        int[] a ={1,4,3,5,25,6,7,8};
        sort(a);
        System.out.println(Arrays.toString(a));

    }
    public static void sort(int[] a){
       
        int last = 0;
        
        for (int i = 0; i < a.length - 1; i++) {
            for (int j = 0; j < a.length - i - 1 ; j++) {
                int temp = 0;
                if (a[j] > a[j+1]){
                    temp = a[j+1];
                    a[j+1] = a[j];
                    a[j] = temp;
                    
                }

                
            }
           
        }
    }
}

以上就是全部内容,如果有错误的地方请批评指正

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值