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

Java 输出数组中顺序错误的对数?,java,arrays,algorithm,time-complexity,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])

例如,我有一个数组:

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++;             
        }
    }

for(int i=0;i按错误顺序排列的对数称为反转数。
有了这些知识,人们可以很容易地找到以前的解决方案:

我认为您可以使用修改后的BST实现这一点。每次您必须向左分支(通过添加新的左子节点或进一步向下移动现有节点),您都会添加新的“错误顺序”成对。特别是,为刚从左侧开始的节点添加一个新的成对,再为右侧的每个节点的后代添加一对。试试看,你就会明白我的意思。非常感谢。希望我在那里找到了我需要的