关于冒泡排序算法的问题

冒泡排序总的来说是要根据比较相邻数的大小来造成位置替换,将给出的数字按从小到大的顺序进行排序
public static void main(String args[]) {
int[] arr={6,3,8,2,9,1};
System.out.println("排序前数组为:");
for(int num:arr){
System.out.print(num+" ");
}
for(int i=0;i<arr.length-1;i++){//外层循环控制排序趟数
for(int j=0;j<arr.length-1-i;j++){//内层循环控制每一趟排序多少次
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
System.out.println(temp);
}
}
}

System.out.println();
System.out.println("排序后的数组为:");
for(int num:arr){
System.out.print(num+" ");
}
}

第一趟排序:
    第一次排序:6 3 比较, 6 大于 3 ,交换位置:   3  6  8  2  9  1
    第二次排序:6 8 比较, 6 小于 8 ,不交换位置: 3  6  8  2  9  1
    第三次排序:8 2 比较, 8 大于 2 ,交换位置:   3  6  2  8  9  1
    第四次排序:8 9 比较, 8 小于 9 ,不交换位置: 3  6  2  8  9  1
    第五次排序:9 1 比较: 9 大于 1 ,交换位置:   3  6  2  8  1  9
    第一趟总共进行了5 次比较, 排序结果:       3  6  2  8  1  9
---------------------------------------------------------------------
第二趟排序:
    第一次排序:3 6 比较, 3 小于 6 ,不交换位置: 3  6  2  8  1  9
    第二次排序:6 2 比较, 6 大于 2 ,交换位置:   3  2  6  8  1  9
    第三次排序:6 8 比较, 6 大于 8 ,不交换位置: 3  2  6  8  1  9
    第四次排序:8 1 比较, 8 大于 1 ,交换位置:   3  2  6  1  8  9
    第二趟总共进行了4 次比较, 排序结果:       3  2  6  1  8  9
---------------------------------------------------------------------
第三趟排序:
    第一次排序:3 2 比较, 3 大于 2 ,交换位置:   2  3  6  1  8  9
    第二次排序:3 6 比较, 3 小于 6 ,不交换位置: 2  3  6  1  8  9
    第三次排序:6 1 比较, 6 大于 1 ,交换位置:   2  3  1  6  8  9
    第二趟总共进行了3 次比较, 排序结果:         2  3  1  6  8  9
---------------------------------------------------------------------
第四趟排序:
    第一次排序:2 3 比较, 2 小于 3 ,不交换位置: 2  3  1  6  8  9
    第二次排序:3 1 比较, 3 大于 1 ,交换位置:   2  1  3  6  8  9
    第二趟总共进行了2 次比较, 排序结果:        2  1  3  6  8  9
---------------------------------------------------------------------
第五趟排序:
    第一次排序:2 1 比较, 2 大于 1 ,交换位置:   1  2  3  6  8  9
    第二趟总共进行了1 次比较, 排序结果:  1  2  3  6  8  9
---------------------------------------------------------------------
最终结果:1  2  3  6  8  9

由此我们可以看出他的总躺数其实便是给出的数字个数i-1 内层循环控制则是n-1-i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值