python中合并排序的空间复杂性

时间:2017-12-30 19:58:28

标签: python mergesort space-complexity

当我在python中实现合并排序时,我怀疑辅助空间复杂度是O(logn),如果我基于以下脚本在Python中实现,则记录的是大多数分析(在递归中考虑调用堆栈)。 merge_sorted_list已被忽略。

def merge_sort(mylist):
    print("splitting ",mylist)
    if (len(mylist) > 1):

        mid = len(mylist)/2

        mylist[:mid] = merge_sort(mylist[:mid])
        mylist[mid:] = merge_sort(mylist[mid:])

        mylist[:] = merge_sorted_list(mylist[:mid],mylist[mid:])

    return mylist

在Python中,我发现调用 merge_sort(mylist [:mid])会创建切片部分的新列表。因此,它不是完全就地操纵。如果我这样写,我的空间复杂度会变成O(n * logn)吗?我不确定我的陈述,但如果是真的,无论如何要在Python中减少到O(logn)(我知道在java数组中我们没有这个问题)?真诚地感谢你。

0 个答案:

没有答案