递归法
class Solution():
def merge_sort(self,nums):
if len(nums)==1:#列表元素个数为1,无需排序直接返回
return nums
if len(nums)==2: #sort列表元素个数为2,排序后返回
if nums[0]>nums[1]:
return [nums[1],nums[0]]
return nums
mid = len(nums) >> 1 #列表个数大于3,求中点
nums1 = self.merge_sort(nums[:mid]) #左半递归
nums2 = self.merge_sort(nums[mid:]) #右半递归
return self.merge(nums1,nums2)#merge合并
def merge(self,nums1,nums2):#merge合并两个有序列表
m = len(nums1)
n = len(nums2)
temp=[]
i=j=0
while(i
没参考大佬的代码,可能有不少需要优化的地方



