0
我目前正在嘗試計時合併排序功能。 唯一的問題是合併排序函數是遞歸的,每次完成時都會返回時間。如何計算遞歸函數?
我該如何解決這個問題?
def MergeSort(argShuffledList):
dblStart = time.clock()
if len(argShuffledList)>1:
intMidValue = len(argShuffledList)//2
listLeftHalf = argShuffledList[:intMidValue]
listRightHalf = argShuffledList[intMidValue:]
left_part = MergeSort(listLeftHalf)
right_part = MergeSort(listRightHalf)
i=0
j=0
k=0
while i < len(listLeftHalf) and j < len(listRightHalf):
if listLeftHalf[i] < listRightHalf[j]:
argShuffledList[k]=listLeftHalf[i]
i =i+1
else:
argShuffledList[k]=listRightHalf[j]
j=j+1
k=k+1
while i < len(listLeftHalf):
argShuffledList[k]=listLeftHalf[i]
i=i+1
k=k+1
while j < len(listRightHalf):
argShuffledList[k]=listRightHalf[j]
j=j+1
k=k+1
intTime = "%.2f" % ((time.clock() - dblStart) * 1000000)
message = "Elasped Time: " + str(intTime) + " microseconds"
print("Selection Sort: ", argShuffledList)
print(message, "\n")
爲什麼在函數內部有計時代碼?爲什麼不在錄製前和錄製後記錄時間? – Carcigenicate
@Carcigenicate是的,確切的。此外,應該使用'timeit'模塊。 –