zoukankan      html  css  js  c++  java
  • python实现归并排序

    import random
    from timewrap import cal_time  # 一个计算时间的装饰器
    
    def merge(li, low, mid, high):
        i = low
        j = mid + 1
        li_tmp = []
        while i <= mid and j <= high:
            if li[i] <= li[j]:
                li_tmp.append(li[i])
                i += 1
            else:
                li_tmp.append(li[j])
                j += 1
        while i <= mid:
            li_tmp.append(li[i])
            i += 1
        while j <= high:
            li_tmp.append(li[j])
            j += 1
        # li[low:high+1] = li_tmp
        for k in range(low, high+1):
            li[k] = li_tmp[k-low]
    
    def _merge_sort(li, low, high):
        if low < high:
            mid = (low + high) // 2
            _merge_sort(li, low, mid)
            _merge_sort(li, mid+1, high)
            merge(li, low, mid, high)
            # print(li[low:mid + 1], li[mid + 1:high + 1])
    @cal_time
    def merge_sort(li):
        _merge_sort(li, 0, len(li)-1)
    
    # li = [10,4,6,3,8,2,5,7]
    # merge_sort(li, 0, len(li)-1)
    # print(li)
    
    li = list(range(100000))
    random.shuffle(li)
    merge_sort(li)
  • 相关阅读:
    MyCAT-安装配置读写分离
    MYSQL-GTID复制
    Harbor使用
    ansible-playbook(合集)
    Ansible批量添加主机
    MyCAT+MGR
    随笔说明
    常用sql语句
    接口测试基础
    正则表达式
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/10124163.html
Copyright © 2011-2022 走看看