Iterative merge sort
\nclass Solution:\n    def sortArray(self, nums: List[int]) -> List[int]:\n        \n        nums = [[num] for num in nums]\n\n        def merge(l1, l2):\n     
```\nclass Solution:\n    def sortArray(self, nums: List[int]) -> List[int]:\n        \n        nums = [[num] for num in nums]\n\n        def merge(l1, l2):\n            i = 0\n            j = 0\n            new = []\n            \n            while i < len(l1) and j < len(l2):\n                if l1[i] < l2[j]:\n                    new.append(l1[i])\n                    i += 1\n                else:\n                    new.append(l2[j])\n                    j += 1\n                    \n            while i < len(l1):\n                new.append(l1[i])\n                i += 1\n                \n            while j < len(l2):\n                new.append(l2[j])\n                j += 1\n                \n            return new\n\n        \n        while len(nums) > 1:\n            new = []\n            for i in range(0, len(nums), 2):\n                if i + 1 < len(nums):\n                    new_arr = merge(nums[i], nums[i+1])\n                    new.append(new_arr)\n                else:\n                    new.append(nums[i])\n            nums = new\n            \n        return nums[0]\n```
['Merge Sort', 'Iterator', 'Python', 'Python3']