Sort a linked list in O(n log n) time using constant space complexity.
Example 1:
Input: 4->2->1->3 Output: 1->2->3->4
Example 2:
Input: -1->5->3->4->0 Output: -1->0->3->4->5
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* sortList(struct ListNode* head) {
int tem;
struct ListNode *p,*q,*r;
if(head==NULL||head->next==NULL)
return head;
for(p=head;p->next!=NULL;p=p->next)
{
r=p;
for(q=p->next;q!=NULL;q=q->next)
{
if(r->val>q->val)
r=q;
}
if(r!=p)
{
tem=p->val;
p->val=r->val;
r->val=tem;
}
}
return head;
}