首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >倒置计数法

倒置计数法
EN

Stack Overflow用户
提问于 2015-03-08 06:43:59
回答 1查看 150关注 0票数 0

我试图在数组中计数反演(如果ai > aj和i

我的问题是,是否有可能使用一种形式的桶技术,以实现O(n)的效率与数据的知识。例如,我已经知道数组是一个1-32的排列,因此最大的元素是32 (这意味着我们可以用桶来完成一些事情)。

我一直在考虑这个问题,并注意到如果我们在一个桶中插入一个元素,那么所有桶在插入时大于它的总和就是它的反转计数。但是,如果我们每次在每个桶中添加元素数,那么我就会失去O(n)效率。任何建议,如何保持一个计数,以取消这一处罚。

请注意,置换可以是任意长度的,但是在执行过程中我们知道置换中元素的数量。因此,"n“的值在执行过程中是已知的,并且置换由从"1”到"n“的元素组成。

排序:可以在O(n)时间复杂度中对此数据集进行排序,因为我们可以创建32个桶,并且我们知道每个桶都有一个元素。因此,对于这个特定的例子,桶排序的效率为O(n + 1) = O(n)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-08 07:29:18

根据http://arxiv.org/pdf/1503.01192.pdf的说法,“众所周知”,你找不到比O(n log )更有效的倒置数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28923848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档