手でやろうとしているのArrays.sort(Object[])
は何ですか?次に、本当に必要なのはアルゴリズムに関する本です。次に、バブル、挿入、クイック、シェル、ヒープなど、さまざまな実装を確認する必要があります。Java には独自のアルゴリズムがあり、どこかに文書化されています。
ただし、 を使用していることはわかっているため、ジェネリック型を使用しないでくださいInteger
。があることを知っているInteger
ので、それを使用してください。 Integer
を実装Comparable
しているため、余分な宣言は必要ありません。
class SortExample {
private Integer[] intArray = {30,20,50,100,1,2,6,1,3,5};
SortExample() {
System.out.println("Before sort " + Arrays.toString(intArray));
sortObject(intArray);
System.out.println("After sort " + Arrays.toString(intArray));
}
public void sortObject(Integer[] array) {
Arrays.sort(intArray);
}
}
使用するアルゴリズムをテストする場合は、メソッドを置き換えますsortObject
。バブルソートの場合、これを使用します。
// Figure out how efficient your algorithm is.
private int numberSwaps = 0;
public void sortObject(Integer[] array) {
final int last = array.length - 1;
for (int end = last; end > 0; end--) {
for (int i = 1; i <= end; i++) {
// No need for compareTo here; it does exactly the same thing.
if (array[i] < array[i-1]) {
swap(array, i, i-1);
numberSwaps++;
}
}
}
System.out.println("Needed " + numberSwaps + " swaps.");
}
private void swap(Integer[] array], int from, int to) {
int temp = array[from];
array[from] = array[to];
array[to] = temp;
}