1. class Solution:
    2. def sortArray(self, nums: List[int]) -> List[int]:
    3. l = 0
    4. h = len(nums) - 1
    5. #self.mergeSort(l, h, nums)
    6. self.quickSort(l, h, nums)
    7. return nums
    8. def mergeSort(self, l, h, nums):
    9. if l < h:
    10. mid = (l + h) // 2
    11. self.mergeSort(l, mid, nums)
    12. self.mergeSort(mid+1, h, nums)
    13. i = l
    14. j = mid + 1
    15. mergeArray = []
    16. while i < mid + 1 and j < h + 1:
    17. if nums[i] < nums[j]:
    18. mergeArray.append(nums[i])
    19. i += 1
    20. else:
    21. mergeArray.append(nums[j])
    22. j += 1
    23. while i < mid + 1:
    24. mergeArray.append(nums[i])
    25. i += 1
    26. while j < h + 1:
    27. mergeArray.append(nums[j])
    28. j += 1
    29. #print(mergeArray)
    30. #print(nums[l:(h+1)])
    31. nums[l:(h+1)] = mergeArray
    32. def quickSort(self, l, h, nums):
    33. if l < h:
    34. j = self.partition(l, h, nums)
    35. #print(j)
    36. #print(nums)
    37. self.quickSort(l, j - 1, nums)
    38. self.quickSort(j+1, h, nums)
    39. def partition(self, l, h, nums):
    40. if l > h:
    41. return None
    42. pivot = nums[l]
    43. i = l
    44. j = h
    45. while i < j:
    46. while nums[i] <= pivot and i < h:
    47. i += 1
    48. while nums[j] > pivot and j >= l:
    49. j -= 1
    50. if i < j:
    51. temp = nums[i]
    52. nums[i] = nums[j]
    53. nums[j] = temp
    54. nums[l] = nums[j]
    55. nums[j] = pivot
    56. return j