满足a[I] > a[j], i < j称之为逆序对,给定一个整数N代表序列长度,第二行包含N个整数,代表序列中的元素,求出序列中逆序对的个数 例如:输入4 2 4 1 7 结果是2
时间: 2024-06-03 18:07:09 浏览: 204
计算一个数组中逆序对的个数
5星 · 资源好评率100%
解题思路:
一般求逆序对的方法有两种,一种是归并排序,一种是树状数组。这里介绍归并排序的方法。
归并排序的基本思想是分治,在归并排序的过程中,每次将序列二分,分别对左右两半进行排序,然后将左右两半合并成有序序列。在合并的过程中,统计逆序对的个数。
具体实现:
在合并两个有序序列时,假设左序列为A,右序列为B,分别从头开始遍历两个序列,对于A[i] > B[j] 的情况,表示存在逆序对,此时统计逆序对的个数为 mid - i + 1,其中 mid 为序列中间位置,i 为左序列当前位置。
C++代码:
阅读全文