3

私は学校のプロジェクトのソートアルゴリズムに取り組んでいますが、問題があります。次のコードは配列をソートしていません。数値の配列で同じコードを試しました(唯一の変更はifにあります)、それは機能していましたが、現在は文字列配列とcompareToの使用では機能していません「ランダム」な順序の項目。

public static void selectionSortISBN(Book pin[], int booksCounter) {
    for (int x = 0; x < booksCounter; x++) {
        int minIndex = x;
        for (int y = x + 1; y < booksCounter; y++) {
            if (pin[y].getISBN().compareTo(pin[minIndex].getISBN()) < 0) {
                minIndex = y;
            }
        }
        Book temp = pin[x];
        pin[x] = pin[minIndex];
        pin[minIndex] = temp;
    }
}

編集:

内部をこれに変更しました:

        for (int y = x + 1; y < booksCounter; y++) {
            int com=pin[y].getISBN().compareTo(pin[minIndex].getISBN());
            System.out.println(pin[y].getISBN()+"   "+pin[minIndex].getISBN()+"  =   "+com);
        }

そして、私が得ている出力はこれです

1537   1485  =   1
596   1485  =   4
1164   1485  =   -3
909   1485  =   8
596   1537  =   4
1164   1537  =   -4
909   1537  =   8
1164   596  =   -4
909   596  =   4
909   1164  =   8
4

2 に答える 2

4

これは正しく機能しています。あなたが犯している間違いは、"596" が "1485" の下にあると期待しているということです。数値を英数字で比較する場合は、先行ゼロを追加します。

于 2013-05-10T12:38:46.627 に答える