Ваш блок кода подкачки выглядел так, как если бы он находился за пределами l oop, поэтому произошел только один обмен за одну итерацию основного l oop. Вы также делаете ненужное сравнение элементов, начиная свой внутренний l oop с предусловия j = 1
. Вы должны начать его с i
, так как после некоторых итераций внешний l oop диапазон от 0 до i
будет уже отсортирован.
Я думаю, что вы можете использовать более простой подход.
for (int i = 0; i < ar.size() - 1; i++) {
for (int j = i; j < ar.size(); j++) {
if (ar.get(j) < ar.get(i)) {
Integer temp = ar.get(j);
ar.set(j, ar.get(i));
ar.set(i, temp);
}
}
}
Как видите, обмен происходит внутри внутреннего l oop, и он также пропускает уже отсортированную часть коллекции.