java冒泡排序原理?

 冒泡排序也是排序算法中的一种,他的排序方式是把下标相邻的两个数进行比较,从小到大排序,下标相邻的两个数,如果后面的数小于前面的数,就进行交换,大于则不交换,继续比较下一组数据,直到比完最后一组数据,这个数组中最大的数就冒出来了,举个例子:

  假定现在有一个整型数组{23,5,41,166,17},我们要对他进行冒泡排序,首先是下标0和下标1进行比较,下标1中的数据5小于下标0中的数据23,将两者进行交换,数组变为{5,23,41,166,17},之后,下标1和下标2进行比较,下标2中的数据大于下标1中的数据,所以不进行交换,再接着按这种原理,比较下标2和下标3,下标3和下标4中的数据,那么到最后,这个整型数组中最大的数字,就会被放在下标4中,之后再进行第二轮比较,还是下标0和下标1进行比较,下标1和下标2进行比较,下标2和下标3进行比较,比较到这里,这一轮就比较完了,因为下标4中放的这个数组中最大的数字,并且下标3中放的是这个数组中第二大的数字了,接下来还是按照这样的原理,找出数组中第三大的数字,第四大的数字……读者不妨自己试着排一下 
   
  我简单说一下原理,为什么比较完之后冒出来的会是最大值,因为当你在比较第一个数和第二个数的时候,如果第二个数小于第一个数,就进行交换,那么就保证了第二个数是前两个数中最大的数,之后第二个数和第三个数进行比较,小于交换,大于不交换,那么就又保证了第三个数是前三个数中最大的数…… 
   
  可以发现,跟选择排序一样,对五个数进行冒泡排序,需要经过四轮比较,第一轮比较4次,第二轮比较3次,第三轮比较2次……对n个数进行排序,则需要n-1轮比较,第一轮比较n-1次,第二轮比较n-2次…… 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值