2016-12-24 85 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函数。