今、私はしばらくこれに取り組んでおり、エラーが発生しています。現在、私が作成しているプログラムはアドレス帳であり、挿入ソートを使用して、ブック (アドレスエントリ) と呼ぶオブジェクトの配列リストをソートしています。ソーターが適切にソートされていないことがすぐにわかったので、ソーターをテストする簡単なプログラムを作成しましたが、再び機能しません。皆さんがそれを見て、私を助けてくれるかどうか疑問に思っていました.
これが私のソーターです:
import java.util.ArrayList;
public class Sorts {
/**
* Sorts and array of integer from low to high
* pre: none
* post: Integers has been sorted from low to high
*/
public static void insertionSort(ArrayList<String> test) {
Comparable temp;
int previousIndex;
ArrayList<String> objectSort = test;
for (int i = 1; i < objectSort.size(); i++) {
temp = objectSort.get(i);
previousIndex = i - 1;
while ((objectSort.get(previousIndex).compareTo((String) temp)) == 1 && (previousIndex > 0)) {
objectSort.set(previousIndex + 1, objectSort.get(previousIndex));
previousIndex -= 1; //decrease index to compare current item with next previous item
}
if (objectSort.get(previousIndex).compareTo((String) temp) == 1) {
/* shift item in first element up into next element */
objectSort.set(previousIndex + 1, objectSort.get(previousIndex));
/* place current item at index 0 (first element */
objectSort.set(previousIndex, (String) temp);
} else {
/* place current item at index ahead of previous item */
objectSort.set(previousIndex + 1, (String) temp);
}
}
}
}
それをテストするための私の簡単なプログラムは次のとおりです。
import java.util.ArrayList;
public class Main {
public static void main(String[] args){
ArrayList<String> test = new ArrayList<String>();
test.add("Roxy");
test.add("Proxy");
test.add("Moxy");
test.add("Samuel Adams");
Sorts.insertionSort(test);
System.out.println(test);
}
}
要約すると、ArrayList ソーターに問題があります。問題は、正しくソートされず、その理由がわかりません。よろしくお願いします。ご不明な点がございましたら、お気軽にお問い合わせください。:)