Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 优化合并排序以计算反转数_Algorithm_Mergesort_Divide And Conquer_Inversion - Fatal编程技术网

Algorithm 优化合并排序以计算反转数

Algorithm 优化合并排序以计算反转数,algorithm,mergesort,divide-and-conquer,inversion,Algorithm,Mergesort,Divide And Conquer,Inversion,我正在开发一个改进版的合并排序,这样它就可以计算反转的次数 注:我不想让你完成我的家庭作业,但我对此有一些想法,我想知道它们是否有意义 由于合并排序是O(nlogn,我需要在不影响其整体性能的情况下对其进行调整。为此,我必须插入一个需要固定时间的测试(1) (1) 假设I A[j],我用A[I]>A[j]测试反转(上)正如我所说,如果你只在数组大小为1时计数,你只会看到成对的反转。我认为你只需要在所有递归调用中保留一个计数器,并在合并步骤中,每当你将左子数组中的一个元素与右子数组中的一个元素进行

我正在开发一个改进版的
合并排序
,这样它就可以
计算反转的次数

注:我不想让你完成我的家庭作业,但我对此有一些想法,我想知道它们是否有意义

由于合并排序是
O(nlogn
,我需要在不影响其整体性能的情况下对其进行调整。为此,我必须插入一个需要固定时间的测试(1)


(1) 假设I A[j],我用
A[I]>A[j]测试反转(上)正如我所说,如果你只在数组大小为1时计数,你只会看到成对的反转。我认为你只需要在所有递归调用中保留一个计数器,并在合并步骤中,每当你将左子数组中的一个元素与右子数组中的一个元素进行比较,并且右子数组中的一个较小时,增加计数器(假设您是按升序排序)。

逆序是指交换索引吗?如果不是,您能解释一下吗?您是在寻找逆序吗?我指的是将未排序的数组转换为已排序数组(其计数当然是“0”)所需的移位数请参见:
use divide-and-conquer and split the list to one elements lists
test A[i] > A[j] as i<j is true for two adjacent lists