1.归并排序
先回顾一下归并排序
归并排序中归和并的意义:
归:递归。递归的将输入数组进行分割至长度为1.
并:合并。将各长度为1的数组顺序合并,完成归并排序。
归并排序的整体思想为分治,主体算法为:
public void mergeSort(int[]arr, intbegin, intend) {
if (begin != end) {
int mid = (begin + end) /2;
mergeSort(arr,begin, mid);
mergeSort(arr,mid + 1, end);
mergeArr(arr,begin, mid, end);
}
}
对{3,1,0,4}执行归并排序的示意图:
数组{3,1,0,4}先递归的被划分为{3},{1},{0},{4},之后被合并为{1,3},{0,4},最后合并为{0,1,3,4}
2.利用归并排序求逆序对
逆序对数的求解发生在mergeArr过程中:
I.{3}与{1}合并时,3>1,为逆序对。{0}与{4}合并时,