Je suis actuellement dans les travaux d'essayer de chronométrer une fonction de tri de fusion. Le seul problème est que la fonction de tri de fusion est récursive et retournera l'heure chaque fois qu'elle a été terminée.Comment chronométrer une fonction récursive?
Comment puis-je résoudre ce problème?
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")
Pourquoi avoir un code temporel dans la fonction? Pourquoi ne pas simplement enregistrer le temps avant d'appeler et après le retour? – Carcigenicate
@Carcigenicate Oui, exactement. De plus, il faut utiliser le module 'timeit'. –