首先对俩个有序数组进行组合排序
def merge_two_vec(nums1,nums2,res):
i = 0
j = 0
len_i = len(nums1)
len_j = len(nums2)
while i <= len_i and j <= len_j:
if nums1[i] <= nums2[j]:
res.append(nums1[i])
i += 1
else:
res.append(nums2[j])
j += 1
res.extend(nums1[i:])
res.extend(nums2[j:])
return res
使用分治,进行归并排序
def merge_sort(nums):
if len(nums) <= 1:
return
mid = len(nums) // 2
left_nums = nums[:mid]
right_nums = nums[mid:]
merge_sort(left_nums)
merge_sort(right_nums)
#这一步很重要,我们排序完子序列,要求最初的序列有所变化
nums.clear()
merge_two_vec(left_nums,right_nums,nums)##此处不需要返回
#因为一直在跟新nums中的值
return nums