算法学习_python-5

归并排序:

#_*_coding: utf-8 _*_:

import random

def Mergesort(str):
    if len(str) <= 1: #子序列
    return str
    mid = (len(str) // 2)
    #递归的切片操作
    left = Mergesort(str[:mid])

    right = Mergesort(str[mid:len(str)])
    
    result = []


    while len(left) > 0 and len(right) > 0:
        if (left[0] <= right[0]):

            result.append(left.pop(0))

        else:

            result.append(right.pop(0))


    if (len(left) > 0):
        result.extend(Mergesort(left))
    else:
        result.extend(Mergesort(right))
    return result   
if __name__ == '__main__':
    a = [1,3,2]


    print (Mergesort(a))
[1, 2, 3]
时间复杂度:nlgn

猜你喜欢

转载自blog.csdn.net/ylwcyt/article/details/82530112