我必须制作一个程序来打印快速排序的时间,但是当列表的长度小于 500 时,它必须执行插入排序,我在这里的代码中做到了:
c = 501
def quickSort(A, p, r):
if p < r:
m = r - p + 1
if m < c:
insert_sort(A, p, r)
else:
# q to indeks dzielenia tablicy
q = partition(A, p, r)
quickSort(A, p, q)
quickSort(A, q + 1, r)
但是,我必须比较快速排序和插入排序的时间
start = time.time()
quickSort(A500, 0, 499)
end = time.time()
start1 = time.time()
quickSort(A500, 0, 499)
end1 = time.time()
print("Num of elements \n500 ", end - start, (end1 - start1))
但是obv,第二个将是0,因为我已经用插入排序对它进行了排序。我想知道如何更改代码,以便一次执行 insert_sorte 和一次快速排序
答案 0 :(得分:0)
您可以使用 deepcopy 将列表的副本传递给函数。您也可以尝试编写 A500[:]
,它会复制 A500
,但 Python 可能会复制它:
from copy import deepcopy
start = time.time()
quickSort(deepcopy(A500), 0, 499)
end = time.time()
start1 = time.time()
quickSort(A500, 0, 499)
end1 = time.time()
print("Num of elements \n500 ", end - start, (end1 - start1))
这样一来,您就不会传递原始列表的副本,而是传递不影响原始列表的副本。