def InversePairs(data):
# write code here
count = 0
length = len(data)
grp_cnt = length
grp_len = 1
result = data.copy()
while grp_cnt >= 1:
cur = 0
while cur < length:
left = result[cur:(cur + grp_len)]
right = result[(cur + grp_len):(cur + 2 * grp_len)]
internal_res = []
while left and right:
if left[0] > right[0]:
internal_res.append(right[0])
right.pop(0)
count += len(left)
else:
internal_res.append(left[0])
left.pop(0)
internal_res.extend(left)
internal_res.extend(right)
result[cur:(cur + 2 * grp_len)] = internal_res
cur += 2 * grp_len
grp_len *= 2
grp_cnt = length // grp_len
return count % 1000000007
剑指offer-逆序对-归并排序-非递归-python
最新推荐文章于 2024-05-01 01:24:14 发布