有没有O(n)求逆序数方法?

_千鸟 2010-01-07 06:07:51
我知道模可以用O(nlogn)实现,但是还有没有更高效的,或是别的算法?

cin>>n;
for(int i = 0;i<n;i++)
cin>>num[i]; //保证输入的数在1~n范围,且不重复
cout<< reverse_num(num,n) <<endl;





...全文
712 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
honghu069 2010-01-12
  • 打赏
  • 举报
回复
几种求逆序数的办法
归并,树状数组,线段树 都是o(nlogn)的
真的有o(n)的吗,除非数据范围非常的小
x642458 2010-01-12
  • 打赏
  • 举报
回复
nlogn,这是分治策略里有这个的。网站协同过滤时需要用到计算逆序数,用分治策略,达到nlogn
forestkeeper1 2010-01-09
  • 打赏
  • 举报
回复
没有,逆序数最快的方法是nlogn。。。
FancyMouse 2010-01-07
  • 打赏
  • 举报
回复
>不过排序的同时也可以统计逆序!
mergesort改一下就是nlogn的了,不过估计lz已经知道了。

>感觉排序是找逆序的前提
这感觉做题还行,要是证明复杂度上下界的话一般都不管用。
绿色夹克衫 2010-01-07
  • 打赏
  • 举报
回复
原来是说效率上界的问题,碰到这种证明我一般都保持沉默。
感觉排序是找逆序的前提,不过排序的同时也可以统计逆序!

[Quote=引用 9 楼 fancymouse 的回复:]
>感觉有点蹊跷,这是真的么?
如果这个是对的,那统计逆序才有nlogn的下界。用排序解逆序只能说明逆序的最优算法有nlogn的上界。
[/Quote]
FancyMouse 2010-01-07
  • 打赏
  • 举报
回复
>感觉有点蹊跷,这是真的么?
如果这个是对的,那统计逆序才有nlogn的下界。用排序解逆序只能说明逆序的最优算法有nlogn的上界。
绿色夹克衫 2010-01-07
  • 打赏
  • 举报
回复
所有用来统计逆序的方法都可用于排序?这回方向对了么?
感觉有点蹊跷,这是真的么?

[Quote=引用 7 楼 fancymouse 的回复:]
>因此各种排序算法应该都可以用来统计逆序。
规约方向反掉了。。。
[/Quote]
FancyMouse 2010-01-07
  • 打赏
  • 举报
回复
>因此各种排序算法应该都可以用来统计逆序。
规约方向反掉了。。。
绿色夹克衫 2010-01-07
  • 打赏
  • 举报
回复
再高的效率恐怕够呛,除非所有数都分布在很小的一个区间里,或许有类似计数排序的方法。
如果是基于比较排序的,排序的过程本身,就可以用来记录逆序的个数,
因此各种排序算法应该都可以用来统计逆序。

[Quote=引用楼主 longteng1116 的回复:]
我知道模可以用O(nlogn)实现,但是还有没有更高效的,或是别的算法?
[/Quote]
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dolphin_001 的回复:]
空间换时间
[/Quote]

怎么个换法?
Dolphin_001 2010-01-07
  • 打赏
  • 举报
回复
空间换时间
zhengjiankang 2010-01-07
  • 打赏
  • 举报
回复
啥是逆序数
_千鸟 2010-01-07
  • 打赏
  • 举报
回复
难道高手看不懂?
[Quote=引用 1 楼 leontown 的回复:]
没有的东西还很多。。。
[/Quote]
LeonTown 2010-01-07
  • 打赏
  • 举报
回复
没有的东西还很多。。。

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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