2016-12-24 70 views
-7

我已經編寫了這個算法來使用冒泡排序來排序列表。這是排序列表最有效的方法嗎?
如果不是,爲什麼?
是什麼讓它效率降低,有什麼替代方案?排序算法比冒泡排序更有效

def BubbleSort(List): 
    for i in range(len(List)-1): 
      for Number in range(len(List)-1): 
       if List[Number] > List[Number+1]: 
        List[Number], List[Number+1] = List[Number+1], List[Number] 

print(BubbleSort([5,2,1,4,3]) 

謝謝!

+0

啊,謝謝。我知道已經有一個內置的排序函數,但我試圖自己制定算法來練習,並且想要了解如何製作更好,更高效的算法。 –

+1

通過谷歌搜索。檢查維基百科。當你能夠提出一個體面的問題時回來。 –

回答

3

在你上面的算法中,如果你的數組的length5,它會執行內部的if statement25次。一般來說,當你有一個n大小的清單,它肯定會做n^2的操作,不包括for loopswapping

對於大小爲10^6的列表,它將是至少10^12作業。 CC++大約每秒操作10^9。所以你的這段代碼將花費10^3秒,這是半個多小時。所以這是非常低效的。

有更好的排序算法,您可以使用,而不是bubble sort,因爲它們比這更快。

很多其他技術也有,但這些是最常見的使用。

除此之外,您無需實施這些算法,因爲其中最高效的算法之一已經在標準庫中實現,主要是從CRust之間的各種語言。如果需要,您可以使用該實現,甚至可以傳遞給您自己的comparator函數。