Thứ Năm, 30 tháng 6, 2011

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;
}
}

Không có nhận xét nào:

Đăng nhận xét

Bài đăng phổ biến