Я пытаюсь реализовать простой алгоритм сортировки вставки, задачей которого является сортировка заданного ArrayList
в порядке убывания.Java не выполняет весь код в основном методе
Вот весь код:
import java.util.ArrayList;
import java.util.Scanner;
public class InsertionSort {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<Integer>();
while (reader.hasNextInt()) {
list.add(reader.nextInt());
}
sort(list);
for (int i = 0; i < list.size(); i++) {
System.out.print(Integer.toString(list.get(i)) + " ");
}
}
private static void sort(ArrayList<Integer> list) {
for (int i = 1; i < list.size(); i++) {
int key = list.get(i);
int j = i - 1;
while (j >= 0 && list.get(j) < key) {
list.set(j + 1, list.get(j));
j--;
}
list.set(j + 1, key);
}
}
}
Однако иногда метод System.out.print
в цикле for
не получает всегда выполняется для всех элементов в списке. Вот несколько примеров ввода и вывода:
// Input:
31
41
59
26
41
58
^C
// Output:
59 58 41
// Input:
5
2
4
6
1
3
^C
// Output:
6 5
Я не могу понять, почему это происходит. Заранее спасибо!
Работает как и ожидалось на моей машине, используя ваш код без каких-либо изменений ... Попробуйте добавить 'System.out.println();' в конце вашего основного метода. –
Вы находитесь в командной строке или в консоли IDE? – oopexpert
Я использую командную строку - Java 8 на 64-битной машине Windows 10. –