我就是随笔记一下。
首先,逆序数的定义我们在线性代数的课程中应该学到过:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。逆序数为偶数的排列称为偶排列;逆序数为奇数的排列称为奇排列。如2431中,21,43,41,31是逆序,逆序数是4,为偶排列。
对于求一个序列的逆序数,O(n^2)的方法是很容易想到的。但是有两个排序算法也可以求出逆序数:
1. 归并排序 时间复杂度O(nlogn)
2.冒泡排序 时间复杂度O(n^2)
归并排序能够计算出序列的逆序数的想法应该比较容易理解。但是最基本的冒泡排序为啥也能求出序列逆序数?
各位看官大老爷自己先想下,不难。