我嘗試使用兩種算法排序我的列表:冒泡和快速。
爲此,我分別使用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
,並且以尚未排序的列表開始。 –
因爲列表已經排序。快速排序可能會在這種情況下根據如何選擇主元素來執行較差的操作。 –