ListNode* sortLinkList(ListNode *head) { if (head == NULL) return NULL; if (head->next == NULL) return head; ListNode* head2 = partitionLinkList(head); head = sortLinkList(head); head2 = sortLinkList(head2); return mergeLinkList(head, head2); }
ListNode* sortList(ListNode* head) { if(!head || !head->next) return head; ListNode *slow = head, *fast = head->next; while(fast && fast->next) { slow = slow->next; fast = fast->next->next; } fast = slow; slow = slow->next; fast->next = NULL; return mergeLinkList(sortList(head),sortList(slow)); }