深入理解冒泡排序

       冒泡排序可以称的上是最基础的排序算法了,开始我也很久没有搞懂这个算法的具体原理,今天跟大家谈谈这个算法究竟怎样实现了排序功能。

        这个算法最基本的思想就是要两两元素之间如果满足条件就互相交换,这里会有因为要实现顺序排序与逆序排序而使这个条件可能为前者比后者大,与前者比后者小。这里就只介绍如何实现顺序排列。

        假设有一个不规整的数组,个数为10,那么在最差的情况下,就是它们本来是逆序排列,我们要将它实现为顺序排列。那么就相当于每一个元素的现在位置都不是他的最终位置。所以我们要进行9趟循环,确保每一次都将一个元素放到它最终的位置上。这里大家可能会有疑问为什么是9次循环,因为每一次循环都能将一个数字放到它最终的位置上,当9个数字都放在了最终的位置上时,那它最后一个元素也必然在其最终的位置。

给出一个数组为arr[10]={9,8,7,6,5,4,3,2,1,0},第一趟进行排序时,需要将arr[0]依次向后进行比较,如果满足arr[i]>arr[i+1],那就将两个数交换。所以第一趟循环的比较次数为10-1=9次。此时9已经放在了它最终的位置上,再次进行排序时就可以忽略9。下来第2趟排序,该对8进行排序,由于不考虑9,那么依次向后比较的次数就会减少一次,只需要比8次就能将8放到最终的位置上。同理第3趟排序,由于在此之前8,9已经放到了最终的位置上,那么7就只需要比7次就可以放在最终位置。也就是第i趟排序时,元素要进行10-1-i次比较。下面的排序也是如此。

那么有上面的分析就可以得出冒泡排序中最核心的算法,如下图所示

相信大家在了解了这部分后就可以再对冒泡排序的排序原理进行更深层次的理解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值