数据结构八大排序之冒泡排序--Java

今天给大家来讲解一下冒泡排序。

原理讲解

首先来介绍一下冒泡排序的基本原理:对存放原始数组的数据,按照从前往后的方向进行多次扫描,每次扫描都称为一趟。当发现相邻两个数据的大小次序不符合时,即将这两个数据进行互换,如果从小大小排序,这时较小的数据就会逐个往前移动,好像气泡网上漂浮一样。

冒泡排序特点:升序排序当中每一轮比较会把最大的数沉到最底(这里以从小到大为例),所有相互比较的次数每一轮会比前一轮少一次。

通过原理我们可以了解到,(冒大泡来举例)冒泡排序每次都是通过目前能找到的最大的数A,来和后面的一个数进行比较,如果比他小,就要和A交换位置,如果比A这个数大,那么这个更大的数成为A,直到A成为最后的一个数。

动图深入理解

如果不太理解的同学,我们可以看下面的动态图。

代码讲解

    public static void main(String[] args){
        int[] arr = {6,1,5,7,9,4,8,2,3};
        System.out.println("排序前:"+Arrays.toString(arr));
        System.out.println("排序后:"+Arrays.toString(sort(arr)));
    }
    public static int [] sort(int[] aa){
        for(int i=0;i<aa.length;i++){
            for(int k=0;k<aa.length-i-1;k++){
                if(aa[k]>aa[k+1]){
                    int temp = aa[k];
                    aa[k]=aa[k+1];
                    aa[k+1]=temp;
                }
            }
        }
        return aa;
    }

在sort 这个方法中我们可以看到有2层for循环。外层for循环,其中i代表第几次进行寻找最大的数,也就在第i次循环中,我们寻找第i大的数。

而内层中则是执行“如果遇到比目前最大的数还要大的数,则进行交换”

我们运行测试,检验代码正确性:

好了,这次的文章就到这里,喜欢的同学可以点赞收藏,遇到问题,可以评论,或者留言,我一定会第一时间给到回馈,感谢观看!!

注:本文为本人学习时心得分享,有讲错或者需要改正的地方,请指正,我会虚心接受

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值