直接对单链表进行选择排序:(代码量较小,但运行时间较长)
class Solution { public: ListNode* sortInList(ListNode* head) { for(ListNode* p=head;p;p=p->next) { for(ListNode* q=p->next;q;q=q->next) if(p->val>q->val) { int temp=p->val; p->val=q->val; q->val=temp; } } return head; } };将链表中的元素放入vector数组中。用sort对数组进行排序,最后将递增数组重新赋给原链表:(代码量略大,但运行时间明显缩短)
class Solution { public: ListNode* sortInList(ListNode* head) { ListNode* p=head; vector<int> a; for(p=head;p;p=p->next) a.push_back(p->val); sort(a.begin(),a.end()); p=head; int temp=0; while(p) { p->val=a[temp++]; p=p->next; } return head; } };