Sort List

采用归并排序,通过定义快、慢两个指针来找到中点,再采用之前的排序算法进行归并。

ListNode *listSort(ListNode *head)
      {
          //定义快慢指针,找到链表中心
          ListNode *slow=head,*fast=head;
          while (fast->next!=nullptr&&fast->next->next!=nullptr)
          {
              slow = slow->next;
              fast = fast->next->next;
          }
          //分为两段
          fast = slow;
          slow = slow->next;
          fast->next = nullptr;

          ListNode *l1=listSort(head);
          ListNode *l2=listSort(slow);

          return mergeList(l1, l2);
      }
View Code

 

posted @ 2016-07-12 16:52  牧马人夏峥  阅读(121)  评论(0编辑  收藏  举报