链表快排

Posted ymjyqsx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表快排相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/otuhacker/article/details/10366563

每次是小数的最后一个,然后用的next位置进行的交换,如果第二个数比第一个数小,就相当于第二数和自己进行交换

pNode* partition(pNode* start,pNode* end){
    int num = start->val;
    pNode* p = start;
    pNode* q = start->next;
    while(q != end){
        if(q->val < num){
            p = p->next;
            swap(p->val,q->val);
        }
        q = q->next;
    }
    swap(p->val,start->val);
    return p;
}


void quick_sort(pNode* start,pNode* end){
    if(start != end){
        pNode* index = partition(start,end);
        quick_sort(start,index);
        quick_sort(index->next,end);
    }
}

 

以上是关于链表快排的主要内容,如果未能解决你的问题,请参考以下文章

链表快排 & 基于链表的排序

算法学习——单链表快排

链表问题-----排序

链表排序中为什么归并比快排好?

链表排序中为什么归并比快排好?

链表的快速排序问题