1、逆序对的定义
逆序对即序列中ai与aj,i<j,但是ai>aj,—— 就是序列排列在前面的元素,大于后面的元素。
2、朴素算法
2.1 算法描述
逆序对的朴素算法即暴力法,针对每个元素,遍历该元素后续的所有元素查找计算相当该元素的逆序对,如下图所示:
2.2 算法分析
时间复杂度O(n^2),空间复杂度O(1)
3、归并排序法 -- 分治法
3.1 算法描述
采用归并排序的方法,将原问题划分成两个规模只有一半的子问题,分别求出各自的逆序对个数,最后加上两段之间的逆序对数,即是全部的逆序对数。
归并排序过程会对每个子问题进行排序,之后合并子问题的解。在合并解的过程中,可以计算逆序对,复杂度即O(n)。
具体实现待...
3.2 算法分析
分治法顾名思义,分而治之,将原问题划分成n个规模较小的问题,分别求解,最后通过合并得到的各子问题的解求出原问题的解。可以表示成如下递归式的概念