java中什么是冒泡,冒泡排序,Java中的经常算法,它是如何实现的呢?

冒泡算法原理:冒泡算法就是依次比较数组中相邻的两个元素,如果左边比右边大则进行调换,以此类推,这样第一次排序就把最大的元素放在最底下

举例说明:要排序数组:int[] arr = {7, 2, 6, 5, 9, 4};

第1轮排序前数组为:[7, 2, 6, 5, 9, 4]

第1轮第1次比较:7大于2交换位置:[2, 7, 6, 5, 9, 4]

第1轮第2次比较:7大于6交换位置:[2, 6, 7, 5, 9, 4]

第1轮第3次比较:7大于5交换位置:[2, 6, 5, 7, 9, 4]

第1轮第4次比较:7小于9不交换位置:[2, 6, 5, 7, 9, 4]

第1轮第5次比较:9大于4交换位置:[2, 6, 5, 7, 4, 9]

第1轮排序后数组为:[2, 6, 5, 7, 4, 9]

第2轮排序前数组为:[2, 6, 5, 7, 4, 9]

第2轮第1次比较:2小于6不交换位置:[2, 6, 5, 7, 4, 9]

第2轮第2次比较:6大于5交换位置:[2, 5, 6, 7, 4, 9]

第2轮第3次比较:6小于7不交换位置:[2, 5, 6, 7, 4, 9]

第2轮第4次比较:7大于4交换位置:[2, 5, 6, 4, 7, 9]

第2轮排序后数组为:[2, 5, 6, 4, 7, 9]

第3轮排序前数组为:[2, 5, 6, 4, 7, 9]

第3轮第1次比较:2小于5不交换位置:[2, 5, 6, 4, 7, 9]

第3轮第2次比较:5小于6不交换位置:[2, 5, 6, 4, 7, 9]

第3轮第3次比较:6大于4交换位置:[2, 5, 4, 6, 7, 9]

第3轮排序后数组为:[2, 5, 4, 6, 7, 9]

第4轮排序前数组为:[2, 5, 4, 6, 7, 9]

第4轮第1次比较:2小于5不交换位置:[2, 5, 4, 6, 7, 9]

第4轮第2次比较:5大于4交换位置:[2, 4, 5, 6, 7, 9]

第4轮排序后数组为:[2, 4, 5, 6, 7, 9]

第5轮排序前数组为:[2, 4, 5, 6, 7, 9]

第5轮第1次比较:2小于4不交换位置:[2, 4, 5, 6, 7, 9]

第5轮排序后数组为:[2, 4, 5, 6, 7, 9]

已排序后的数组为:[2, 4, 5, 6, 7, 9]

由此可见:N个数字要排序完成,总共进行N-1轮排序,每i轮的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数,即

for(int i=0;i

for(int j=0;j

//交换位置

}

冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。如上例:第一轮比较之后,排在最后的一个数一定是最大的一个数,第二轮排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二轮比较的数后面,第三轮比较的时候,只需要比较除了最后两个数以外的其他的数,以此类推……也就是说,每进行一轮比较,每一轮少比较一次,一定程度上减少了算法的量。

因此冒泡排序总的时间复杂度为O(n*n)

代码例子:

欢迎关注老猫码坊,与老猫一起了解更多互联网科技和编程知识。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值