class Solution:
def InversePairs(self, data):
self.cnt = 0
def merge(left,right):
l1 = len(left)
l2 = len(right)
lis = []
i,j = 0,0
while i < 11 and j < l2:
if left[i] < right[j]:
lis.append(left[i])
i += 1
else:
lis.append(right[j])
j += 1
self.cnt += l1 - i
return lis
def merge_sort(mylist):
le = len(mylist)
if le <= 1:return mylist
mid = le // 2
left = merge_sort(mylist[:mid])
right = merge_sort(mylist[mid:])
return merge(left,right)
merge_sort(data)
return self.cnt
归并排序+统计数组中的逆序对
最新推荐文章于 2022-06-28 17:34:12 发布
这个博客主要介绍了如何使用归并排序算法来计算一个整数数组中逆序对的数量。`InversePairs`函数首先定义了一个内部的`merge`函数,用于合并两个已排序的子数组,并在过程中计算逆序对。然后,通过递归的`merge_sort`函数实现归并排序。在排序过程中,逆序对的总数被记录在`cnt`变量中。整个过程展示了如何结合排序算法解决特定问题。
摘要由CSDN通过智能技术生成