-
-
Notifications
You must be signed in to change notification settings - Fork 40
/
Copy path0912-sort-an-array.py
32 lines (27 loc) · 917 Bytes
/
0912-sort-an-array.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# time complexity: O(nlogn)
# space complexity: O(n)
from typing import List
class Solution:
def sortArray(self, nums: List[int]) -> List[int]:
if len(nums) <= 1:
return nums
mid = len(nums) // 2
left = self.sortArray(nums[:mid])
right = self.sortArray(nums[mid:])
return self.mergeSortedArray(left, right)
def mergeSortedArray(self, aList: List[int], bList: List[int]):
sortedArray = []
left = 0
right = 0
while left < len(aList) and right < len(bList):
if aList[left] < bList[right]:
sortedArray.append(aList[left])
left += 1
else:
sortedArray.append(bList[right])
right += 1
sortedArray += aList[left:]
sortedArray += bList[right:]
return sortedArray
nums = [5, 2, 3, 1]
print(Solution().sortArray(nums))