次のコードはクイックソートクラスです。下に向かって、swapというメソッドがあります。このメソッドは配列を取り、その配列の2つの数値を入れ替えるものです。これはJavaで可能ですか?言い換えれば、このインスタンスで動作するswap(T []、int、int)の形式でメソッドを持つことが可能ですか?私の質問が意味をなさないことを願っている配列と配列の2つの整数インデックスをパラメータとして取るスワップメソッド
public class QuickSort {
public static <T extends Comparable<T>> void sort(T[] table) {
quickSort(table, 0, table.length - 1);
}
private static <T extends Comparable<T>> void quickSort(T[] table, int first, int last) {
if (first < last) {
int pivIndex = partition(table, first, last);
quickSort(table, first, pivIndex - 1);
quickSort(table, pivIndex + 1, last);
}
}
private static <T extends Comparable<T>> int partition(T[] table, int first, int last) {
T pivot = table[first];
int up = first;
int down = last;
do {
while ((up < last) && (pivot.compareTo(table[up]) >= 0)) {
up++;
}
while (pivot.compareTo(table[down]) < 0) {
down--;
}
if (up < down) {
swap(table, up, down);
}
}
while (up < down);
swap(table, first, down);
return down;
}
はい、問題なく動作します。それを試しましたか? – markspace
彼のインデントは悪いです。これは 'do while'ループです。 – markspace