题解 | #单链表的排序#

单链表的排序

http://www.nowcoder.com/practice/f23604257af94d939848729b1a5cda08

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




全部评论

相关推荐

07-11 10:56
门头沟学院 Java
码客明:大胆的说自己能实习6个月就行
点赞 评论 收藏
分享
苍蓝星上艾露:这简历。。。可以试试我写的开源简历优化工具https://github.com/weicanie/prisma-ai
点赞 评论 收藏
分享
这是什么操作什么意思,这公司我服了...
斯派克spark:意思是有比你更便宜的牛马了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务