クイックソート
振り仮名でソートをしたいのですが不等号の「<」など記号など混ぜた時にうまくソートされません。
ロジック的に問題があると思うのですが、平仮名や全角カタカナはソートされてるのです。以下のソースなのですが分かる方ご指摘頂ければ幸いです。
int lo0は固定で0
int hi0は検索結果の数-1となっております。
getKana()は振り仮名をbeanから取得しています。
private void QuickSort(Vector beanValues, int lo0, int hi0) {
int low = lo0;
int high = hi0;
String mid;
Object[] records = beanValues.toArray();
if (hi0 > lo0) {
mid = ((Bean)records[ ( lo0 + hi0 ) / 2 ]).getKana();
while( low <= high ) {
while ((low < hi0) && (((Bean)records[low]).getKana().compareTo(mid) < 0)) {
++low;
}
while ((high > lo0) && (((Bean)records[high]).getKana().compareTo(mid) > 0)) {
--high;
}
if (low <= high) {
swap(beanValues, low, high);
++low;
--high;
}
}
if (lo0 < high) QuickSort(beanValues, lo0, high);
if (low < hi0) QuickSort(beanValues, low, hi0);
}
}
private void swap(Vector records, int i, int j) {
Object T = records.elementAt(i);
records.setElementAt(records.elementAt(j), i);
records.setElementAt(T, j);
}
}
お礼
ご回答ありがとうございます。 ポスト前に日本語のWikipedia は、読みましたが、 これが、国際的な分類方法かどうか、分からなかったので、質問しました。