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))