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