单链表 快速排序

来源:互联网 发布:sql dateadd 编辑:程序博客网 时间:2024/06/05 03:02

如题:  一个比较简短的 单链表 快速排序算法


struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};void exch(int *a, int *b){int t = *a;*a = *b;*b = t;}void QuickSortList(ListNode *head, ListNode *last){if (head == NULL || head == last)return;ListNode *slow = head;ListNode *fast = head->next;while (fast != last) {           //最后一个节点last不比较,或者为上一次的分割节点 或者为 NULLif (fast->val < head->val) {slow = slow->next;exch(&slow->val, &fast->val);}fast = fast->next;}exch(&head->val, &slow->val);QuickSortList(head, slow);QuickSortList(slow->next, last);  //slow->next 至多和 last 相等, 不会到last之后}ListNode *sortList(ListNode *head) {QuickSortList(head, NULL);return head;}


0 0
原创粉丝点击