Sort List

原创 2016年06月01日 10:44:32

Sort a linked list in O(n log n) time using constant space complexity.

思路:使用归并的方式来实现链表的排序。先将链表一直拆分到一个个元素,对于每一个元素都是有序的,然后两两进行合并成一个有序链表。

解决代码如下:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* sortList(ListNode* head) {//先将链表分成两个部分,然后再将两个链表进行merge
        if(head==NULL || head->next==NULL)
            return head;
        ListNode *mid=findmid(head);
        ListNode *right=sortList(mid->next);
        mid->next=NULL;
        ListNode *left=sortList(head);
        return merge(left,right);
    }
    //返回一个链表的中间节点
    ListNode *findmid(ListNode *head)
    {
        ListNode *slow=head,*fast=head->next;
        while(fast!=NULL&&fast->next!=NULL)
        {
            slow=slow->next;
            fast=fast->next->next;
        }
        cout<<slow->val<<endl;
        return slow;
    }
    //合并两个有序链表
    ListNode *merge(ListNode *slow,ListNode *fast)
    {
        ListNode *res=new ListNode(0);
        ListNode *slo=res;
        while(slow&&fast)
        {
            if(slow->val<=fast->val)
            {
                slo->next=slow;
                slow=slow->next;
            }
            else
            {
                slo->next=fast;
                fast=fast->next;
            }
            slo=slo->next;
        }
        if(slow)
            slo->next=slow;
        else if(fast)
            slo->next=fast;
        return res->next;
    }
    
};


版权声明:本文为博主原创文章,未经博主允许不得转载。

c#中List<>类的Sort()的几种形式

.Net中的List 1.不带有任何参数的Sort方法----Sort(); 2.带有比较器参数的Sort方法 ----Sort(IComparer) 3.带有比较代理方法参数的Sort方法--...
  • mrzhengttl
  • mrzhengttl
  • 2017年03月26日 15:58
  • 1545

LeetCode Sort List 解题报告

Sort a linked list in O(n log n) time using constant space complexity. http://oj.leetcode.com/proble...
  • worldwindjp
  • worldwindjp
  • 2014年02月08日 15:31
  • 8982

排序与list.sort()使用

排序与List.sort()
  • u011611902
  • u011611902
  • 2015年10月27日 16:46
  • 11519

泛型 List中的Sort方法

常用的两种使用scort()进行排序的方法 对于List按照某一个字段的值进行排序,使用系统提供的sort方法进行排序,需要继承ICompare接口实现参数中的CompareTo方法,注...
  • qq_38280936
  • qq_38280936
  • 2017年09月01日 19:08
  • 757

list带参数的sort函数

#include #include #include #include #include #include #include #include #include #include #include #...
  • u010660276
  • u010660276
  • 2013年10月25日 22:55
  • 897

std list/vector sort 自定义类的排序就是这么简单

网上江湖郎中和蒙古大夫很多,因此,此类帖子也很多。关于排序,我还真没研究过,看了江湖郎中和蒙古大夫的帖子,搞了半天不行,所以,自己研究了一下,如下:三种方式都可以,如重写容器中是对象时,用容器中是对象...
  • marising
  • marising
  • 2009年09月18日 17:58
  • 38773

Sort List -- LeetCode

原题链接: http://oj.leetcode.com/problems/sort-list/  这道题题目要求我们用O(nlogn)算法对链表进行排序,但是并没有要求用哪一种排序算法,我们可以使用...
  • linhuanmars
  • linhuanmars
  • 2014年03月14日 08:16
  • 16007

C++ STL中list的sort问题

排序算法有很多,效率都不错,有现成的就用
  • jackiesun
  • jackiesun
  • 2014年06月03日 15:24
  • 1658

148. Sort List (python)

Sort a linked list in O(n log n) time using constant space complexity. 思路:能够有O(n lgn)时间复杂度的算法为,快速排序...
  • qq_28119401
  • qq_28119401
  • 2016年09月19日 22:12
  • 269

【小松教你手游开发】【unity实用技能】c# list sort 列表排序

网上有很多,这里只是写一个简单,可用的。 最简单的是int这种本身就可以排序的类型。直接sort就行。 如果是gameobject这种或其他自定义类型不能排序。 这里给一个方法: 1.写一个类,包...
  • chrisfxs
  • chrisfxs
  • 2015年08月27日 16:40
  • 1983
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Sort List
举报原因:
原因补充:

(最多只允许输入30个字)