直接对单链表进行选择排序:(代码量较小,但运行时间较长)
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;
}
}; 
京公网安备 11010502036488号