А вам не кажется, что тут есть лишние движения? 1. Первый цикл можно закончить прогонять на предпоследнем элементе, то есть i < array.length - 1. 2. Второй цикл можно начать с int j = i + 1. Иначе при int j = i мы на первом шаге сравниваем число с самим собой. Это ваше решение: public static void sort(int[] array) { for (int i = 0; i < array.length; i++) { for (int j = i; j < array.length; j++) { if (array[i] > array[j]) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } } } } То есть вот эта сортировка работает, решение прошло валидацию: public static void sort(int[] a){ for (int i = 0; i < a.length - 1; i++) { for (int j = i + 1; j < a.length; j++) { if (a[i] > a[j]){ int temp = a[j]; a[j] = a[i]; a[i] = temp; } } } } Или это мелочи?