sort-list

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

class Solution(object):
   def mergeTwoLists(self, left, right):
      if left == None: return left
      if right == None: return right
      head = Node(0)
      dumm = head
      while left is not None and right is not None:
         if left.data < right.data:
            head.next = left
            left = left.next
         else:
            head.next = right
            right = right.next
         head = head.next
      if left is not None:
         head.next = left
      if right is not None:
         head.next = right
      return dumm.next

   def sortList(self,head):
      if head is None or head.next is None:
         return head
      slow = head
      fast = head
      while fast.next is not None and fast.next.next is not None:
         slow = slow.next
         fast = fast.next.next
      left = head
      right = slow.next
      slow.next = None  left = self.sortList(left)
      right = self.sortList(right)
      head = self.mergeTwoLists(left, right)
      return head


head = Creatlist(8)
printlist(head)
print "-------------------------"
S = Solution()
printlist(S.sortList(head))

点赞