-1
私は単純な挿入ソートアルゴリズムを実装しようとしています。その目的は与えられた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);
}
}
}
しかし、時にはfor
ループ内System.out.print
方法は、常にリスト内のすべての要素に対して実行されません。ここで
は、すべてのコードです。入力と出力のサンプルをいくつか示します:
// 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マシンで使用しています。 –