归并排序的python实现

import math

def sort(arr):
    num_count = len(arr)
    n = 0
    while True:
        temp_arr = []
        group_size = 2 ** n

        for i in range(math.ceil(num_count/group_size/2)):
            left = arr[group_size*(2*i):group_size*(2*i+1)]
            right = arr[group_size*(2*i+1):group_size*(2*i+2)]
            while left and right:
                if left[0] > right[0]:
                    temp_arr.append(left.pop(0))
                else:
                    temp_arr.append(right.pop(0))
            temp_arr.extend(left)
            temp_arr.extend(right)
        arr = temp_arr
        if group_size >= num_count:
            break
        n += 1
    return arr

la = [5, 2, 7, 8, 6, 1, 4, 9, 10, 1, 2, 3, 4]
print(sort(la))

分享文章:归并排序的python实现
转载注明:http://www.hxwzsj.com/article/jodpie.html

其他资讯

Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 重庆网站建设 成都网站建设流程 成都响应式网站建设 成都网站建设 阿坝网站设计 网站建设公司 成都企业网站制作 移动手机网站制作 成都模版网站建设 网站建设方案 响应式网站设计 专业网站建设 成都响应式网站建设公司 成都网站设计 成都网站设计 成都做网站建设公司 成都网站设计 成都网站建设公司 成都营销网站建设 宜宾网站设计 网站建设改版 成都网站建设