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);
}
}
我试图在“合并排序算法的划分步骤”中展示每个步骤。
例如我输入这个列表: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)
我什么都想不出来。请帮忙。