一般的なクイックソートメソッドを使用してオブジェクトの配列をソートするプログラムを終了しようとしています。私のプログラムはまだ適切にソートされていません。同様のアルゴリズムを使用していましたが、文字列をソートする際には一般的ではありませんでしたので、どこが間違っているのか分かりません。助けてください! は、ここで私が働いてきた、次のクイックソートのコードです:あなたは文字列でのcompareToを使用できるようにarraylist内のオブジェクトで汎用クイックソートメソッドを正しく実行する方法
private static <E> void doQuickSort(ArrayList <E> list, int start, int end)
{
if(list == null || list.size() == 0)
return;
if(start >= end)
return;
int middle = start + (end - start)/2;
E pivot = (E) list.get(middle);
int s = start, e = end;
while (s <= e)
{
while(pivot.equals(list.get(s)))
{
s++;
}
while(pivot.equals(list.get(e)))
e--;
if(s <= e)
{
E temp = list.get(s);
list.set(s, list.get(e));
list.set(e, temp);
s++;
e--;
}
if(start < e)
doQuickSort(list, start, e);
if(end > s)
doQuickSort(list, s, end);
}
}
EがComparableを拡張しない場合、どのように動作しますか? –
私は実際には使用していませんでしたが、私の以前のプログラムではcompareTo()を文字列に使うときは必要ありませんでした。私の研究ではequals()メソッドがオブジェクトに対して機能すると述べています。このような状況に他の方法はありませんか? p.s.私は非常にこれが奇妙に聞こえる場合はごめんなさい! –
どうすればソートを '等しく(...)'することができますか?何かが大きいか小さいかを知る必要があります。 –