如何计算递归函数?

时间:2017-03-09 18:41:09

标签: python python-3.x sorting recursion timing

我目前正在尝试计算合并排序功能。 唯一的问题是合并排序函数是递归的,并且每次完成时都会返回时间。

我该如何解决这个问题?

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")

1 个答案:

答案 0 :(得分:3)

您是否尝试过将时间移到方法之外?换句话说,启动计时,然后调用您的方法,然后停止计时:

# Start timing
dblStart = time.clock()
# Call method
MergeSort(argShuffledList)
# Stop timing and print results
intTime = "%.2f" % ((time.clock() - dblStart) * 1000000)
message = "Elasped Time: " + str(intTime) + " microseconds"
print(message, "\n")