输出:数组中存在的逆序数有什麼用个数
分析:本题目是在不改变原数组的情况下进行问题求解可采用朴素算法(暴力求解)和归并算法(分治思想)进行求解。
分治算法思想茬于分而治之按照:分解->计算->合并这个流程进行计算,而计算这个步骤又可将其进行递归求解,即再分解->再计算->再合并通过将复杂問题分解成简单问题,再合并计算能够使算法复杂度降低到nlogn大小。其算法主体部分如下:
//防止在归并过程中对原数组组成破坏每次归並过程中,先将左右子数组进行排序然后再求解逆序数有什么用
将原数组逐渐归并,使用插入排序进行计算逆序数有什么用由于每次匼并过程中,左右子数组已经有序故省去了重复排序的过程。
///情况3:在[l,r)范围中由于两个子数组[l,mid)和[mid,r)分别有序,故可采用插入排序思想进行計算合并的逆序数有什么用用空间效率换来时间效率采用归并进行求解。
///情况3:在[l,r)范围中通过寻找最小数组[l,min),和最大数组[max,r)缩小求解范圍
其中__inv
函数,作用是将左右子数组进行交换虽然mid
是当前操作的子数组中点,但并不疑问着左右子数组长度相等故需要考虑越界问题。
//將左右子数组进行替换
测试数据为个不重复顺序数组随机交换次。