JavaでInsertion Sortを学習しようとしていますが、問題があります。私は昇順で挿入の並べ替えを学びました。今、私は降順でそれを行う必要がありますが、私は右から左に配列をソートする必要があります。挿入右から左へ並べ替え
public class Sorting {
public static void sort(Comparable[] a) {
int N = a.length;
for (int i = 1; i < N; i++) {
for (int j = i; j > 0 && less(a[j], a[j - 1]); j--)
swap(a, j, j - 1);
}
}
private static void swap(Comparable[] a, int i, int j) {
Comparable t = a[i];
a[i] = a[j];
a[j] = t;
}
private static boolean less(Comparable v, Comparable w) {
return v.compareTo(w) < 0;
}
}
上記で昇順に左から右に配列をソートコード(1,2,3,4、...)。
降順に変更する必要がありますが、右から左(5,4,3,2 ..)に並べ替える必要があります。 私は、コードを変更し、これを試してみました:
public static void sort(Comparable[] a) {
int N = a.length;
for (int i = N-1; i>=0; i--) {
for (int j = i; j >= 1 && less(a[j-1], a[j]); j++)
swap(a, j, j-1);
}
}
もう1つ質問したい。 「断言する」とは何ですか? – Thec0der
assertはテスト目的のためのものであり、ブール値の項を消費し、falseの場合はプログラムがクラッシュします。これはプログラムフローで、プログラムの状態が正しいことを確認するために、ある条件が満たされている必要がある場合にのみ使用されます。 – fairtrax