Чтобы подтвердить проницательное наблюдение @ Крэйга, фактический вызов функции в версии фрагмента подтверждает, что они в значительной степени точно такие же быстрые.
import timeit
bubble='''
def bubble_sort(elements):
n=0
for i in range(len(elements)-n):
for j in range(len(elements)-1):
if elements[j]>elements[j+1]:
elements[j+1],elements[j] = elements[j], elements[j+1]
n+=1
return elements
bubble_sort([1,22,4,632,12,3432,54531,2,2,2,2,2,4,54,3,2,1,54,43,11,22,32])
'''
def bubble_sort(elements):
n=0
for i in range(len(elements)-n):
for j in range(len(elements)-1):
if elements[j]>elements[j+1]:
elements[j+1],elements[j] = elements[j], elements[j+1]
n+=1
return elements
print(timeit.timeit(stmt=bubble, number=10000))
print(timeit.timeit(stmt=lambda: bubble_sort([1,22,4,632,12,3432,54531,2,2,2,2,2,4,54,3,2,1,54,43,11,22,32]), number=10000))
print(timeit.timeit(stmt=lambda: list(sorted([1,22,4,632,12,3432,54531,2,2,2,2,2,4,54,3,2,1,54,43,11,22,32])), number=10000))
И, конечно же, вам не следует бросать собственная сортировка пузырьков, кроме практики.
0.569853096
0.5863851120000001
0.00920665399999998