逆序对

S_zxing 2010-10-24 12:34:15
确定n个元素的任何排列中逆序对的数目,要求算法复杂度O(nlgn)……
逆序对,即对包含n个不同数的数组A[1...n],如果在i<j的情况下,有A[i]>A[j],则(i,j)就称为一个逆序对。
麻烦大家给我个算法或者思想,不要源代码,谢谢……
...全文
127 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
漫步者、 2010-10-24
  • 打赏
  • 举报
回复
快速排序吧!
bullbat 2010-10-24
  • 打赏
  • 举报
回复
先用快排或其他o(nlgn)算法进行排序,然后统计就是了
积木 2010-10-24
  • 打赏
  • 举报
回复
这不就是个降序排序吗?归并,快排都可以。难道我理解错了?
mstlq 2010-10-24
  • 打赏
  • 举报
回复
qq120848369 2010-10-24
  • 打赏
  • 举报
回复
归并排序过程中计算逆序数,假设a...b,c...d各自已经有序,那么归并a...b和c...d时,如果发现a[i]>c[j],那么a[i+1]...a[b]都大于c[j],这些都是逆序对。当然,当你发现a[i]>c[j]并记录了所有相关逆序对(a[i],c[j]),(a[i+1],c[j]),(a[i+2],c[j])...(a[b],c[j])之后,当然要让c[j]归并到集合中,然后继续比较a[i]和a[j+1],求与a[j+1]相关逆序对,如果a[i]>a[j+1]的话。
S_zxing 2010-10-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bullbat 的回复:]

先用快排或其他o(nlgn)算法进行排序,然后统计就是了
[/Quote]
怎么统计呢,麻烦说清楚点,在哪里统计,怎么统计?
GoonYangXiaofang 2010-10-24
  • 打赏
  • 举报
回复
借助 归并排序思想
漫步者、 2010-10-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 goodboy1881 的回复:]
这不就是个降序排序吗?归并,快排都可以。难道我理解错了?
[/Quote]可以的吧!

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧