2016-02-08 218 views
-6

試圖查看功能是否正常工作,我嘗試打印出來看看隨機列表是否可以排序,但是似乎沒有打印任何東西。另外,我將如何測量將列表排序出來所需的時間?功能輸出不打印?

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) 

沒有輸出,爲什麼?

回答

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) 

在您發佈的版本,你有例行的如果語句中的主體還在,但回報後。這意味着它永遠不能執行。如果你看,你應該發現你的程序做了打印的東西,值沒有