【发布时间】:2015-01-24 05:04:22
【问题描述】:
我尝试实现合并排序,这是我的代码:
def mergeSort(array):
result=[]
n=len(array)
if n==1:
result=array
else:
a=round(n/2)
first=mergeSort(array[0:a])
second=mergeSort(array[a:n])
for i in range(len(first)):
for j in range(len(second)):
if first[i]<second[j]:
result.append(first[i])
i=i+1
else:
result.append(second[j])
j=j+1
return result
a=[5,4,1,8,7,6,2,3]
b=mergeSort(a)
print(b)
不幸的是,结果是[1]。我的功能有什么问题?
【问题讨论】:
-
只是一个快速提示,与问题无关。 Python有一个枚举,而不是使用
for i in range(len(my_list)),而是使用for i, value in enumerate(my_list),它解包值并分配一个索引(从0开始)。