【问题标题】:Sorting algorithms more efficient than bubble sort [closed]排序算法比冒泡排序更有效[关闭]
【发布时间】:2016-12-24 22:06:53
【问题描述】:

我已经编写了这个算法来使用冒泡排序对列表进行排序。这是对列表进行排序的最有效方法吗?
如果不是,为什么?
是什么降低了它的效率?有哪些替代方案?

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])

谢谢!

【问题讨论】:

  • 啊,谢谢。我知道已经有一个内置的排序功能,但我正在尝试自己制作算法以供练习,并想了解如何制作更好、更有效的算法。
  • 通过谷歌搜索。检查维基百科。当你能提出一个体面的问题时回来。

标签: python algorithm programming-languages


【解决方案1】:

在你上面的算法中,如果你的数组的length5,它将执行内部的if statement25次。一般来说,当你有一个n 大小的列表时,它肯定会执行n^2 操作,不包括for loopswapping

对于大小为10^6 的列表,它至少是10^12 操作。 CC++ 每秒执行大约 10^9 操作。因此,您的这段代码将花费10^3 秒,即半个多小时。所以这是非常低效的。

您可以使用更好的排序算法来代替bubble sort,因为它们比这更快。

还有很多其他技术,但这些是最常用的。

除此之外,您不需要实现这些算法,因为最有效的算法之一已经在从CRust 的大多数语言的标准库中实现。您可以使用该实现,甚至可以根据需要传递您自己的 comparator 函数。

【讨论】:

    猜你喜欢
    • 2011-11-22
    • 2013-02-02
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 2016-11-01
    • 2013-09-04
    • 2013-11-02
    • 2013-06-20
    相关资源
    最近更新 更多