面试题:数组中的逆序对题目:在数组中的两个数字如

21 查阅
面试题:数组中的逆序对题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。

参考答案:

正确答案:

例如在数组{7,5,6,4)中,一共存在5个逆序对,分别是(7,6)、(7,5)、(7,4)、(6,4)和(5,4)。
看到这个题目,我们的第一反应是顺序扫描整个数组。每扫描到一个数字的时候,逐个比较该数字和它后面的数字的大小。如果后面的数字比它小,则这两个数字就组成了一个逆序对。假设数组中含有n个数字。由于每个数字都要和O(n)个数字作比较,因此这个算法的时间复杂度是O(n2)。我们再尝试找找更快的算法。
我们以数组{7,5,6,4}为例来分析统