问题描述:
给定一组数字或者输入一组数字,如{13,2,5,6,7,4},求这组数字的逆序对数量。
首先逆序对的定义:
解决办法:
1.最基础最容易理解的算法就是采用循环。从数字的第一个数据开始向后遍历,碰到逆序就累加。最后输出逆序对。时间复杂度为O(n^2)。其实是可以改进的。
优点是好写,容易理解。
缺点是时间复杂度太高。
2.考虑冒泡排序和直接插入排序。冒泡排序和直接插入排序的一个共同特点就是,每次遍历仅能消去一个逆序对。因此也可以考虑采用直接插入排序来计算逆序对。直接插入排序的时间复杂度最坏也是O(N^2)。
3采用归并排序。时间复杂度约为O(nlogn)。由于是归并排序,还需要额外的O(N)的空间。
主要思想就是将待求的数组分成两个等长的数组,分别求两个数组的逆序,再求整个的逆序对。