排序算法比冒泡排序更有效

时间:2016-12-24 22:06:53

标签: python algorithm programming-languages

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

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

谢谢!

1 个答案:

答案 0 :(得分:3)

在上述算法中,如果数组的length5,则会执行内部if statement 25次。一般情况下,当您有n大小的列表时,我们肯定会n^2for loopswapping之外的操作。

对于大小为10^6的列表,至少会进行10^12次操作。 CC++每秒执行10^9次操作。所以你的这段代码需要10^3秒,超过半小时。这样效率非常低。

您可以使用更好的排序算法,而不是bubble sort,因为它们比这更快。

还有许多其他技术,但这些技术最常用。

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