带插入排序的快速排序

时间:2021-03-19 15:33:45

标签: python

我必须制作一个程序来打印快速排序的时间,但是当列表的长度小于 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 和一次快速排序

1 个答案:

答案 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))

这样一来,您就不会传递原始列表的副本,而是传递不影响原始列表的副本。

相关问题