输出数组中错误顺序的对数?

时间:2013-12-02 18:20:58

标签: java arrays algorithm time-complexity

例如我有数组:

int IDs[]={1,21,5,3,12,23,2};

错误顺序的对数是9。对是:(21, 5) (21,3) (21, 12) (21,2) (5,3) (5,2) (3,2) (12,2) (23,2)

所以,我的算法意味着两个用于:

 for(int i=0;i<IDs.length;i++)
    {
        for(int j=i+1;j<IDs.length;j++)
        {
            if(IDs[i]>IDs[j]) 
                wrong++;             
        }
    }

问题在于它具有n 2 的复杂性,我应该具有最大n * log n的复杂性。

1 个答案:

答案 0 :(得分:0)

错误顺序的对数称为反转次数。 有了这些知识,有人可以轻松找到以前的解决方案:
Counting inversions in an array