JavaEE基础之冒泡排序


       今天长沙黑马程序员老师给大家详细讲解一个案例:数组冒泡排序。

       具体是这样的:有一个数组 int[] arr = {24, 69, 80, 57, 13};  把这个数组按从大到小的顺序排列。

       我们冒泡排序的思路是这样的:从头开始两两比较,也就是0索引和1索引的元素比较,如果1索引比较大就交换位置,然后1索引和2索引元素比较,以此类推。大的数组就像水里的泡泡一样,越接近水面气泡越大。

        

       好的,让我们画几个泡泡吧!
 


   这是数组原来的样子,我们按照数字的大小画了泡泡。一个泡泡从水里冒出到水面,随着压强的减小,气泡是越来越大的,所以我们这个看着就不太对啦。我们开始排序吧。

[Java]  纯文本查看  复制代码
?
1
2
3
4
5
6
7
8
9
for ( int i = 0 ; i < arr.length - 1 ; i++) { // 外循环只需要比较arr.length-1次就可以了
     for ( int j = 0 ; j < arr.length - 1 - i; j++) { // -1为了防止索引越界,-i为了提高效率(后面排好序的就不比较了)
         if (arr[j] > arr[j + 1 ]) { // j元素跟j+1比较
             int temp = arr[j];
             arr[j] = arr[j + 1 ];
             arr[j + 1 ] = temp;
         }
     }
}

   第一次比较:24和69比较-交换,24和80比较-交换,24和57比较-交换,24和13比较-不交换,因此第一次遍历之后顺序为:
    
       我们发现13 、24、57的顺序已经排好。接下来我们继续分析排序步骤:69和80比较-交换,69和57比较-不交换,57和24比较-不交换,24和13比较-不交换。
       
     至此我们就排好啦,通过图片是不是很直观就明白了冒泡排序的过程?哈哈~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值