数组O(nlogn)复杂度方法中的元素,用于查找对

时间:2012-08-29 11:06:10

标签: 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和时间复杂度方面所做的一切都很重要

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

结果由O(n ^ 2)个元素组成,因此迭代遍历所有对的任何尝试都将为O(n ^ 2)。