我尝试使用两种排序算法和quick sort
来对我的列表进行排序。
为此,我分别使用了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
的影响不明显。 - jonatanalgorithms
模块(你也没有说它来自哪里),但它看起来足够智能,可以在内部循环未执行任何交换时终止。因此,在这种情况下,它对列表进行了一次单独的遍历,其时间复杂度为O(n)。 - PM 2Ring