冒泡排序(优化版)的比较次数和交换数字次数 逆序数+树状数组

题目链接:https://www.contesthunter.org/contest/%E5%85%83%E6%97%A6%E6%AC%A2%E4%B9%90%E8%B5%9B/%E8%BE%9B%E5%B7%B4%E6%9D%A5%E6%8E%92%E5%BA%8F

 

思路:

要求冒泡排序优化以后的趟数和交换次数

交换次数等于逆序数
因为冒泡排序是临对换排序, 临对换一次减少一个逆序对

冒泡的趟数:
求出每个数a[i]的前面比它大的数的个数记为b[i]
答案是max{b[]}+1
最后一趟没有swap
总共冒泡max{b[]}+1这么多趟
因为对于每个数, 每一趟都把它前面比他大的一个数移到了它的后面
max{b[]}趟以后每个数前面都没有比它大的了,。。,,。
整体有序。。,。

(思路来自neko13)

代码:
#include<stdio.h>
#include<iostream>
#include<string.h>
#include&
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值