归并排序 python版

归并算法和二分查找是加深对递归思想理解的很好的算法,两者可以结合着看,二分查找是进入函数都先做逻辑处理,然后再进行下一轮递归,递归到条件满足后逐层推出函数。
归并排序是进入函数后先递归进入下一层函数,直到递归到条件满足后逐层推出函数,推出函数前进行逻辑处理。
def guibing(data, l, r):
    if(l < r):
        m = (l+r)/2
        guibing(data, l, m)
        guibing(data, m+1, r)
        tmp = [x for x in data]
        lt = m
        rt = r
        while(lt >= l and rt > m):
            if(tmp[lt] > tmp[rt]):
                data[r] = tmp[lt]
                r -= 1
                lt -= 1
            else:
                data[r] = tmp[rt]
                r -= 1
                rt -= 1
        while(lt >= l):
            data[r] = tmp[lt]
            r -= 1
            lt -= 1
        while(rt > m):
            data[r] = tmp[rt]
            r -= 1
            rt -= 1
    else:
        return
点赞