我尝试使用两种算法排序我的列表:冒泡和快速。
为此,我分别使用algorithms
模块和bubble_sort
,quick_sort
。据我所知,第一个算法的复杂度是n^2
,第二个是n*log(n)
。但我得到意想不到的输出从这个代码:为什么冒泡排序比快速排序快
from algorithms.sorting import bubble_sort, quick_sort
import time
my_list = [1, 12, 33, 14, 52, 16, 71, 18, 94]
start1 = time.time()
for i in range(1000000):
bubble_sort.sort(my_list)
end1 = time.time()
start2 = time.time()
for i in range(1000000):
quick_sort.sort(my_list)
end2 = time.time()
print('Bubble sort:', end1 - start1)
print('Quick sort:',end2 - start2)
输出:
>>> Bubble sort: 7.04760217666626
>>> Quick sort: 8.181402921676636
为什么在这种情况下,冒泡排序比快速排序更快吗?
您的测试数据对于'n^2'来说太小而不重要 – jonatan
,并且以尚未排序的列表开始。 –
因为列表已经排序。快速排序可能会在这种情况下根据如何选择主元素来执行较差的操作。 –