试图看看这些功能是否有效,我试着打印出来看是否可以对随机列表进行排序,但似乎没有打印出来。另外,我如何衡量排序列表所需的时间?
import random
import time
def mergeSort(mylist):
if len(mylist) <= 1:
return mylist
mid = len(mylist) // 2
left = mergeSort(mylist[:mid])
right = mergeSort(mylist[mid:])
return merge(left,right)
def merge(left,right):
if not left:
return right
if not right:
return left
if left[0] < right[0]:
return [left[0]]+merge(left[1:],right)
else:
return [right[0]]+merge(left,right[1:])
newList=[]
for i in range(100):
newList.append(random.randint(1,1000))
val = mergeSort(newList)
print (val)
没有输出,为什么?
答案 0 :(得分:6)
你吹了你的缩进。这是正确的版本:
def mergeSort(mylist):
if len(mylist) <= 1:
return mylist
mid = len(mylist) // 2
left = mergeSort(mylist[:mid])
right = mergeSort(mylist[mid:])
return merge(left,right)
在您发布的版本中,例程的主体仍在 if 语句中,但在返回之后。这意味着它永远不会执行。如果你看,你应该发现你的程序 打印了一些东西,值无。