Ваш код семантически неверен. Вы не сравниваете соседние элементы.
ваш код ...
for x in element:
for y in element2[idx:]:
if x>y:
будет сравнивать первый элемент списка со всеми остальными элементами в списке, начиная с idx.
Пузырьковая сортировка работает путем сравнения соседних элементов и «всплытия» самого большого / наименьшего элемента до конца списка на каждом проходе.
Этот код, найденный на сайте interactivepython.org, работает путем итерации от начала списка до (len of list) - (number of iterations)
, поэтому при первом проходе он выделяет самый большой элемент в конец списка. На втором проходе он помещает второй по величине элемент со второй на последнюю позицию в списке ... и так далее.
def bubbleSort(alist):
for passnum in range(len(alist)-1,0,-1):
for i in range(passnum):
if alist[i]>alist[i+1]:
temp = alist[i]
alist[i] = alist[i+1]
alist[i+1] = temp
https://interactivepython.org/runestone/static/pythonds/SortSearch/TheBubbleSort.html