|
28 | 28 |
|
29 | 29 | ```python
|
30 | 30 | class Solution:
|
31 | | - def merge(self, left_arr, right_arr): # 合并过程 |
32 | | - arr = [] |
| 31 | + # 合并过程 |
| 32 | + def merge(self, left_nums: [int], right_nums: [int]): |
| 33 | + nums = [] |
33 | 34 | left_i, right_i = 0, 0
|
34 | | - while left_i < len(left_arr) and right_i < len(right_arr): |
| 35 | + while left_i < len(left_nums) and right_i < len(right_nums): |
35 | 36 | # 将两个有序子数组中较小元素依次插入到结果数组中
|
36 | | - if left_arr[left_i] < right_arr[right_i]: |
37 | | - arr.append(left_arr[left_i]) |
| 37 | + if left_nums[left_i] < right_nums[right_i]: |
| 38 | + nums.append(left_nums[left_i]) |
38 | 39 | left_i += 1
|
39 | 40 | else:
|
40 | | - arr.append(right_arr[right_i]) |
| 41 | + nums.append(right_nums[right_i]) |
41 | 42 | right_i += 1
|
42 | 43 |
|
43 | | - while left_i <len(left_arr): |
44 | | - # 如果左子数组有剩余元素,则将其插入到结果数组中 |
45 | | - arr.append(left_arr[left_i]) |
| 44 | + # 如果左子数组有剩余元素,则将其插入到结果数组中 |
| 45 | + while left_i <len(left_nums): |
| 46 | + nums.append(left_nums[left_i]) |
46 | 47 | left_i += 1
|
47 | | - |
48 | | - while right_i <len(right_arr): |
49 | | - # 如果右子数组有剩余元素,则将其插入到结果数组中 |
50 | | - arr.append(right_arr[right_i]) |
| 48 | + |
| 49 | + # 如果右子数组有剩余元素,则将其插入到结果数组中 |
| 50 | + while right_i <len(right_nums): |
| 51 | + nums.append(right_nums[right_i]) |
51 | 52 | right_i += 1
|
52 | 53 |
|
53 | | - return arr # 返回合并后的结果数组 |
| 54 | + # 返回合并后的结果数组 |
| 55 | + return nums |
54 | 56 |
|
55 | | - def mergeSort(self, arr): # 分解过程 |
56 | | - if len(arr) <= 1: # 数组元素个数小于等于 1 时,直接返回原数组 |
57 | | - return arr |
| 57 | + # 分解过程 |
| 58 | + def mergeSort(self, nums: [int]) -> [int]: |
| 59 | + # 数组元素个数小于等于 1 时,直接返回原数组 |
| 60 | + if len(nums) <= 1: |
| 61 | + return nums |
58 | 62 |
|
59 | | - mid = len(arr) // 2 # 将数组从中间位置分为左右两个数组 |
60 | | - left_arr = self.mergeSort(arr[0: mid]) # 递归将左子数组进行分解和排序 |
61 | | - right_arr = self.mergeSort(arr[mid:]) # 递归将右子数组进行分解和排序 |
62 | | - return self.merge(left_arr, right_arr) # 把当前数组组中有序子数组逐层向上,进行两两合并。 |
| 63 | + mid = len(nums) // 2 # 将数组从中间位置分为左右两个数组 |
| 64 | + left_nums = self.mergeSort(nums[0: mid]) # 递归将左子数组进行分解和排序 |
| 65 | + right_nums = self.mergeSort(nums[mid:]) # 递归将右子数组进行分解和排序 |
| 66 | + return self.merge(left_nums, right_nums) # 把当前数组组中有序子数组逐层向上,进行两两合并 |
63 | 67 |
|
64 | | - def sortArray(self, nums: List[int]) -> List[int]: |
| 68 | + def sortArray(self, nums: [int]) -> [int]: |
65 | 69 | return self.mergeSort(nums)
|
66 | 70 | ```
|
67 | 71 |
|
|
0 commit comments