活跃农民
- 积分
- 533
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2014-7-9
- 最后登录
- 1970-1-1
|
大神你好!可不可以拜托你看看我的Python代码?我现在可以按照老师讲的用mergesort把数列按顺序输出,但是我不知道怎么才能计算inversion的个数?哎,deadline已经过了,可不可以麻烦你提示一下?
def merge_sort(a):
n=len(a)
if n<=1:
return a
left=a[:n/2]
right=a[n/2:]
left=merge_sort(left)
right=merge_sort(right)
return merge(left,right)
def merge(b,c):
d=()
i=0
j=0
k=0
test=True
while k<len(b)+len(c):
if b[i]<c[j]and i<len(b):
if test:
d+=(b[i],)
k+=1
if i<(len(b)-1):
i+=1
else:
k+=1
d+=(c[j],)
test=False
if j<(len(c)-1):
j+=1
elif b[i]>c[j]and j<len(c):
if test:
d+=(c[j],)
k+=1
if j<(len(c)-1):
j+=1
else:
k+=1
d+=(b[i],)
test=False
if i<(len(b)-1):
i+=1
return d
非常感谢! |
|