В вашем алгоритме сортировки есть ошибка. Когда вы перемещаете элемент completed
в конец списка, текущий элемент (с индексом position
) заменяется следующим элементом (из position+1
). Но на следующей итерации первой увеличивается position
, поэтому вы не обработали новый элемент (полученный из position+1
).
Например, список:
(1 выполнено) (2 выполнено) (3 не завершено)
После первой итерации у вас будет:
(2 выполнено) (3 незавершено) (1 выполнено)
но следующая итерация начнется с элемента (3 incomplete)
, а элемент (2 completed)
будет пропущен.