我已经编写了这个算法来使用冒泡排序对列表进行排序。这是对列表进行排序的最有效方法吗?
如果没有,为什么?
什么使它效率降低以及存在哪些替代方案?
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 :(得分:3)
在上述算法中,如果数组的length
为5
,则会执行内部if statement
25
次。一般情况下,当您有n
大小的列表时,我们肯定会n^2
除for loop
和swapping
之外的操作。
对于大小为10^6
的列表,至少会进行10^12
次操作。 C
或C++
每秒执行10^9
次操作。所以你的这段代码需要10^3
秒,超过半小时。这样效率非常低。
您可以使用更好的排序算法,而不是bubble sort
,因为它们比这更快。
还有许多其他技术,但这些技术最常用。
除此之外,您不需要实施这些算法,因为最有效的算法之一已经在标准库中实现,大多数语言都是从C
到Rust
。您可以使用该实现,甚至可以根据需要传递自己的comparator
函数。