题意:
         给定一个节点数为n的无序单链表,对其按升序排序。

方法一:
直接暴力

思路:二重循环,直接冒泡排序。
            交换链表节点中的值。




class Solution {
public:
    
    ListNode* sortInList(ListNode* head) {
        ListNode *p,*q;
        for(p=head;p!=nullptr;p=p->next){//二重循环
            for(q=p->next;q!=nullptr;q=q->next){
                if(p->val>q->val){//交换值
                    int t=p->val;
                    p->val=q->val;
                    q->val=t;
                }
            }
        }
        return head;
    }
};


时间复杂度:
空间复杂度:


方法二:
数组+快排

思路:用一个临时数组存储链表的值,再对数组进行快速排序,
            最后将临时数组的值赋给链表。

class Solution {
public:
    
    ListNode* sortInList(ListNode* head) {
        vector<int> v;
        ListNode *p=head;
        while(p!=nullptr){//将链表的值存储到临时数组
            v.push_back(p->val);
            p=p->next;
        }
        sort(v.begin(),v.end());//临时数组快排

        p=head;
        int i=0;
        while(p!=nullptr){//将临时数组的值赋给链表的节点
            p->val=v[i++];
            p=p->next;
        }
        return head;
    }
};

时间复杂度:
空间复杂度: