c - 数组中的元素 O(nlogn) 查找对的复杂度方法

标签 c complexity-theory

好吧,我一直被这里的复杂性所困扰。有一个元素数组,比如说 A[n] .需要找到所有对,以便 A[i]>A[j]还有i < j .

所以如果是{10, 8, 6, 7, 11} , 这些对将是 (10,8) (10, 6), (10,7) and so on...

我在 nlogn 时间内进行了合并排序,然后在 nlogn 时间内再次对整个数组进行二分搜索,以获取已排序数组中元素的索引。

所以 sortedArray={6 7 8 10 11}index={3 2 0 1 4}

无论我尝试什么,我都会得到另一个 n^2当我开始循环比较时的复杂性时间。我的意思是,如果我从第一个元素开始,即 10,它位于 index[2]。这意味着比它少 2 个元素。所以如果index[2]<index[i]然后他们可以被接受,但这增加了复杂性。有什么想法吗?我不想要代码,只要向正确的方向提示就会有所帮助。

谢谢。我在 C 中所做的一切,时间复杂度在这里很重要

最佳答案

你不能在 O(N^2) 下执行此操作,因为当原始数组按降序排序时,算法将生成的对数为 N(N-1 )/2。您根本无法在 O(N*LogN) 时间内生成 O(N^2) 结果。

关于c - 数组中的元素 O(nlogn) 查找对的复杂度方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12176518/

相关文章:

c - 将这个简单的 C 代码转换为 VBA

algorithm - 如果某物是 f(n) 的小 O,它是否也是 f(n) 的大 O?

algorithm - O(n^2) 是否大于 O((n^2)logn)

algorithm - 找到所有路径的复杂度是多少

complexity-theory - 您如何防止过于复杂的解决方案或设计?

c - 使用 scanf 或 gets 进行输入的运行时异常

c - 使用 C 预处理器生成两个函数

c - 为什么 short 在 C 的结构中存储为 4 个字节?

C - 将 'string' 而不是 char 分配给 open 函数使用的变量

integration - 集成 np、np 完整、np 是困难的还是以上都不是?