图文详解冒泡排序(java实现)

1.冒泡排序原理

比较相邻的元素,如果第一个比第二大就交换位置。每一对相邻元素都这样做,从开始一对到最后一对,这样最大元素就会排在最后,重复这个过程直到排完。

2.算法特点

2.1 时间复杂度

if序列是正序,则需要比较N-1(N为序列个数),移动0次,时间复杂度为O(n),这种是最好的情况;

if序列是反序,则需要比较N-1次,每次需要进行N-i次比较,移动N-i次,时间复杂度为O(n*n);

 

3.eg:

int[] a={5,9,2,6,4,1}

第一次排序:

1.:比较5与9,5小于9,不交换位置 :5,9,2,6,4,1

2:比较9与2,9大于2,交换位置:5,2,9,6,4,1

3:比较9与6,9大于6,交换位置:5,2,6,9,4,1

4:比较9与4,9大于4,交换位置:5,2,6,4,9,1

5:比较9与1,9大于1,交换位置:5,2,6,4,1,9

第一次排序比较5次,找到最大的数,放在末尾,排序结果为5,2,6,4,1,9

第二次排序:

1:  比较5与2,5大于2,交换位置:2,5,6,4,1,9

2:  比较5与6,5小于6,不交换位置:2,5,6,4,1,9

3:比较6与4,6大于4,交换位置:2,5,4,6,1,9

4:比较6与1,6大于1,交换位置:2,5,4,1,6,9

第二次排序比较4次,找到第二大的数,排序结果为2,5,4,1,6,9

第三次排序:

1:比较2与5,2小于5,不交换位置:2,5,4,1,6,9

2:比较5与4,5大于4,交换位置:2,4,5,1,6,9

3:比较5与1,5大于1,交换位置:2,4,1,5,6,9,

第三次排序比较3次,排序结果为2,4,1,5,6,9

第四次排序:

1:比较2与4,2小于4,不交换位置:2,4,1,5,6,9

2:比较4与1,4大于1,交换位置:2,1,4,5,6,9

第四次排序比较两次,排序结果为2,1,4,5,6,9

第五次排序:

1:比较2与1,2大于1,交换位置:1,2,4,5,6,9

第五次排序比较一次,排序结果为1,2,4,5,6,9

 

4.代码展示

可以由上面列子看出,一共进行了N-1次排序,进行过N-i次比较

public static void bSort(int[] arr){
    if(arr==null||arr.length<2){
        return;
    }
    for(int end=arr.length-1;end>0;end--){
        for(int i=0;i<end;i++){
            if(arr[i]>arr[i+1]){
                int temp=arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=temp;
            }
        }
    }
}

外循环为排序次数,内循环为比较次数;

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值