Quicksort trên Danh sách liên kết đơn
void quick_sort(LIST &&l)
{
LIST l1;LIST l2;
if(l.pHead==NULL) // rong
return;
else
{
khoitao(l1);
khoitao(l2);
NODE *x=l.pHead;
l.pHead=x->pNext;
while(l.pHead!=NULL)
{
NODE *p=l.pHead;
l.pHead=p->pNext;
p->pNext=NULL;
if(p->data<=x->data)
themdau2(l1,p);
else
themdau2(l2,p);
}
quick_sort(l1);
quick_sort(l2);
if(l1.pHead==NULL)
l.pHead=x;
else
{
l.pHead = l1.pHead;
l1.pTail->pNext = x;
}
x->pNext = l2.pHead;
if(l2.pHead==NULL)
l.pTail = x;
else
{
l.pTail = l2.pTail;
}
}
}
Nhận xét
Đăng nhận xét