当我在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数组中我们没有这个问题)?真诚地感谢你。