// 快排 交换值
void quickSort(ListNode * s, ListNode * t) {
if(s == t || s->next == t) return ;
ListNode * mid = partation(s,t);
quickSort(s,mid);
quickSort(mid->next,t);
}
ListNode * partation(ListNode * s, ListNode * t) {
if(s == t) return s;
if(s->next == t) return s; // 一个节点
int val = s->val;
ListNode * slow = s;
ListNode * fast = s->next;
while(fast != t) {
if(fast->val <= val) {
slow = slow->next;
Swap(fast->val,slow->val);
}
fast = fast->next;
}
Swap(slow->val,s->val);
return slow;
}
// 快排 改变节点
void qucikSort2(ListNode * pre, ListNode * s, ListNode * t) {
if(s == t || s->next == t) return ;
ListNode * mid = partation2(pre,s,t);
qucikSort2(pre,pre->next,mid);
qucikSort2(mid,mid->next,t);
}
ListNode * part
单链表排序(快排、归并)
最新推荐文章于 2021-10-01 19:35:05 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)