归并排序+统计数组中的逆序对

这个博客主要介绍了如何使用归并排序算法来计算一个整数数组中逆序对的数量。`InversePairs`函数首先定义了一个内部的`merge`函数,用于合并两个已排序的子数组,并在过程中计算逆序对。然后,通过递归的`merge_sort`函数实现归并排序。在排序过程中,逆序对的总数被记录在`cnt`变量中。整个过程展示了如何结合排序算法解决特定问题。
摘要由CSDN通过智能技术生成
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





















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值