List List:: mergesort(List m)
{
if(m.count() <= 1)
return m;
else
{
List l,r;
node* temp = m.head;
node* ptemp = m.head;
node* first = m.head;
int c = m.count();
for(int i = 1; temp->next!=NULL && i<=(c/2)+1; i++)
{
ptemp = temp;
temp = temp->next;
}
ptemp->next = NULL;
while(first!=NULL)
{
l.insert(first->data);
first = first->next;
}
while(temp!=NULL)
{
r.insert(temp->data);
temp = temp->next;
}
cout<<"\t\t";
l.display();
cout<<"\t\t";r.display();cout<<"\n";
l = mergesort(l);
r = mergesort(r);
}
}
マージソートアルゴリズムの分割ステップ中の各ステップを表示しようとしています。
たとえば、次の List を入力します: 5 3 7 14 2
望ましい出力: -
5 3 7 14 2
5 3 7 14 2
5 3 7 14 2
5 3 7 14 2
私が得るものは:
5 3 7 14 2
5 3 7 14 2
5 3 7
5 3
14 2
私は何をすべきか?私はあらゆる可能なことを試みましたが、近づくことさえできません。どんな体でも助けてくれませんか?
さて、これはデバッグ後に私が理解していることです。関数mergesort()の内部は次のとおりです。
マージソート(5 3 7 14 2)
マージソート(5 3 7)
マージソート(5 3)
マージソート(14 2)
私が必要とするのは:-
mergesort(5 3 7 14 2)
mergesort(5 3 7)
mergesort(14 2)
mergesort(5 3)
何も考えられません。助けてください。