単独でリンクされたリストをソートするためのクイックソート機能の実装に取り組んでいます。これを達成するには、どのアルゴリズムを使用する必要がありますか? リンクされたリストの場合、配列の通常の O(1) ではなく、比較ごとに最悪の場合の O(N) が必要になります。では、最悪の場合の複雑さはどうなるでしょうか?
要約すると、最適なソート アルゴリズムを実現するには、クイック ソート アルゴリズムにどのような変更を加える必要があり、アルゴリズムの最悪の場合の複雑さはどれくらいになるでしょうか?
ありがとう!
私は以下の実装を持っています:
public static SingleLinkedList quickSort(SingleLinkedList list, SLNode first, SLNode last)
{
if (first != null && last != null)
{
SLNode p = partition(list, first, last) ;
quickSort(list,first,p) ;
quickSort(list,p.succ, last) ;
}
return list ;
}
public static SLLNode partition(SinlgleLinkedList list, SLNode first, SLNode last)
{
SLNode p = first ;
SLNode ptr = p.succ ;
while (ptr!=null)
{
if (ptr.data.compareToIgnoreCase(p.data)<0)
{
String pivot = p.data ;
p.data = ptr.data ;
ptr.data = p.succ.data ;
p.succ.data = pivot ;
p = p.succ ;
}
ptr = ptr.succ ;
}
return p ;
}