首页 > 编程语言 > 详细

python实现归并排序

时间:2018-12-15 18:14:36      阅读:119      评论:0      收藏:0      [点我收藏+]
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)

 

python实现归并排序

原文:https://www.cnblogs.com/xiao-xue-di/p/10124163.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!