手写代码系列 归并排序

def mergeSort(nums,start,end):
    if start>=end:return
    mid=(start+end)//2
    mergeSort(nums,start,mid)
    mergeSort(nums,mid+1,end)
    merge(nums,start,mid,end)

def merge(nums,start,mid,end):
    tmp,i,j=[],start,mid+1
    while i<=mid and j<=end:
        if nums[i]<=nums[j]:
            tmp.append(nums[i])
            i+=1
        else:
            tmp.append(nums[j])
            j+=1
    while i<=mid:
        tmp.append(nums[i])
        i+=1
    while j<=end:
        tmp.append(nums[j])
        j+=1
    #nums[start:start+len(tmp)]=tmp
    for i in range(len(tmp)):
        print(start+i,i)
        print(nums)
        nums[start+i]=tmp[i]

nums=[7-i for i in range(7)]
print(nums)
mergeSort(nums,0,len(nums)-1)
print(nums)

你可能感兴趣的:(leetcode)