一、详细调整过程(不打印li, low, mid, high)

1、实现代码

import random
import time
import copy
import sys


def cal_time(func):
    def wrapper(*args, **kwargs):
        t1 = time.time()
        result = func(*args, **kwargs)
        t2 = time.time()
        print("%s running time: %s secs." % (func.__name__, t2 - t1))
        return result
    return wrapper

def merge(li, low, mid, high):
    i = low
    j = mid + 1
    ltmp = []
    while i <= mid and j <= high:
        if li[i] < li[j]:
            ltmp.append(li[i])
            i += 1
        else:
            ltmp.append(li[j])
            j += 1
    while i <= mid:
        ltmp.append(li[i])
        i += 1
    while j <= high:
        ltmp.append(li[j])
        j += 1
    li[low:high+1] = ltmp


def _mergesort(li, low, high):
    if low < high:
        mid = (low + high) // 2
        _mergesort(li,low, mid)
        _mergesort(li, mid+1, high)
        #merge(li, low, mid, high)
        print(li[low:high+1])


def mergesort(li):
    _mergesort(li, 0, len(li) - 1)


li = list(range(10000))
random.shuffle(li)
mergesort(li)
print(li)

2、打印结果

  1 "C:\Program Files\Python35\python.exe" E:/工作目录/python/test/heap.py
  2 [5, 97]
  3 [57, 20]
  4 [5, 97, 57, 20]
  5 [51, 21]
  6 [51, 21, 88]
  7 [5, 97, 57, 20, 51, 21, 88]
  8 [55, 40]
  9 [55, 40, 26]
 10 [33, 99]
 11 [33, 99, 82]
 12 [55, 40, 26, 33, 99, 82]
 13 [5, 97, 57, 20, 51, 21, 88, 55, 40, 26, 33, 99, 82]
 14 [58, 13]
 15 [58, 13, 63]
 16 [65, 54]
 17 [65, 54, 1]
 18 [58, 13, 63, 65, 54, 1]
 19 [85, 66]
 20 [85, 66, 39]
 21 [89, 81]
 22 [89, 81, 59]
 23 [85, 66, 39, 89, 81, 59]
 24 [58, 13, 63, 65, 54, 1, 85, 66, 39, 89, 81, 59]
 25 [5, 97, 57, 20, 51, 21, 88, 55, 40, 26, 33, 99, 82, 58, 13, 63, 65, 54, 1, 85, 66, 39, 89, 81, 59]
 26 [76, 46]
 27 [19, 52]
 28 [76, 46, 19, 52]
 29 [72, 14]
 30 [72, 14, 62]
 31 [76, 46, 19, 52, 72, 14, 62]
 32 [79, 64]
 33 [79, 64, 75]
 34 [61, 16]
 35 [61, 16, 83]
 36 [79, 64, 75, 61, 16, 83]
 37 [76, 46, 19, 52, 72, 14, 62, 79, 64, 75, 61, 16, 83]
 38 [43, 2]
 39 [43, 2, 29]
 40 [27, 10]
 41 [27, 10, 42]
 42 [43, 2, 29, 27, 10, 42]
 43 [96, 25]
 44 [96, 25, 53]
 45 [95, 12]
 46 [95, 12, 0]
 47 [96, 25, 53, 95, 12, 0]
 48 [43, 2, 29, 27, 10, 42, 96, 25, 53, 95, 12, 0]
 49 [76, 46, 19, 52, 72, 14, 62, 79, 64, 75, 61, 16, 83, 43, 2, 29, 27, 10, 42, 96, 25, 53, 95, 12, 0]
 50 [5, 97, 57, 20, 51, 21, 88, 55, 40, 26, 33, 99, 82, 58, 13, 63, 65, 54, 1, 85, 66, 39, 89, 81, 59, 76, 46, 19, 52, 72, 14, 62, 79, 64, 75, 61, 16, 83, 43, 2, 29, 27, 10, 42, 96, 25, 53, 95, 12, 0]
 51 [47, 44]
 52 [22, 93]
 53 [47, 44, 22, 93]
 54 [15, 24]
 55 [15, 24, 17]
 56 [47, 44, 22, 93, 15, 24, 17]
 57 [11, 71]
 58 [11, 71, 74]
 59 [34, 86]
 60 [34, 86, 60]
 61 [11, 71, 74, 34, 86, 60]
 62 [47, 44, 22, 93, 15, 24, 17, 11, 71, 74, 34, 86, 60]
 63 [7, 92]
 64 [7, 92, 37]
 65 [98, 28]
 66 [98, 28, 3]
 67 [7, 92, 37, 98, 28, 3]
 68 [56, 84]
 69 [56, 84, 77]
 70 [36, 41]
 71 [36, 41, 18]
 72 [56, 84, 77, 36, 41, 18]
 73 [7, 92, 37, 98, 28, 3, 56, 84, 77, 36, 41, 18]
 74 [47, 44, 22, 93, 15, 24, 17, 11, 71, 74, 34, 86, 60, 7, 92, 37, 98, 28, 3, 56, 84, 77, 36, 41, 18]
 75 [67, 69]
 76 [8, 50]
 77 [67, 69, 8, 50]
 78 [80, 38]
 79 [80, 38, 6]
 80 [67, 69, 8, 50, 80, 38, 6]
 81 [90, 48]
 82 [90, 48, 45]
 83 [32, 94]
 84 [32, 94, 23]
 85 [90, 48, 45, 32, 94, 23]
 86 [67, 69, 8, 50, 80, 38, 6, 90, 48, 45, 32, 94, 23]
 87 [73, 35]
 88 [73, 35, 91]
 89 [49, 9]
 90 [49, 9, 30]
 91 [73, 35, 91, 49, 9, 30]
 92 [78, 4]
 93 [78, 4, 68]
 94 [70, 31]
 95 [70, 31, 87]
 96 [78, 4, 68, 70, 31, 87]
 97 [73, 35, 91, 49, 9, 30, 78, 4, 68, 70, 31, 87]
 98 [67, 69, 8, 50, 80, 38, 6, 90, 48, 45, 32, 94, 23, 73, 35, 91, 49, 9, 30, 78, 4, 68, 70, 31, 87]
 99 [47, 44, 22, 93, 15, 24, 17, 11, 71, 74, 34, 86, 60, 7, 92, 37, 98, 28, 3, 56, 84, 77, 36, 41, 18, 67, 69, 8, 50, 80, 38, 6, 90, 48, 45, 32, 94, 23, 73, 35, 91, 49, 9, 30, 78, 4, 68, 70, 31, 87]
100 [5, 97, 57, 20, 51, 21, 88, 55, 40, 26, 33, 99, 82, 58, 13, 63, 65, 54, 1, 85, 66, 39, 89, 81, 59, 76, 46, 19, 52, 72, 14, 62, 79, 64, 75, 61, 16, 83, 43, 2, 29, 27, 10, 42, 96, 25, 53, 95, 12, 0, 47, 44, 22, 93, 15, 24, 17, 11, 71, 74, 34, 86, 60, 7, 92, 37, 98, 28, 3, 56, 84, 77, 36, 41, 18, 67, 69, 8, 50, 80, 38, 6, 90, 48, 45, 32, 94, 23, 73, 35, 91, 49, 9, 30, 78, 4, 68, 70, 31, 87]
101 [5, 97, 57, 20, 51, 21, 88, 55, 40, 26, 33, 99, 82, 58, 13, 63, 65, 54, 1, 85, 66, 39, 89, 81, 59, 76, 46, 19, 52, 72, 14, 62, 79, 64, 75, 61, 16, 83, 43, 2, 29, 27, 10, 42, 96, 25, 53, 95, 12, 0, 47, 44, 22, 93, 15, 24, 17, 11, 71, 74, 34, 86, 60, 7, 92, 37, 98, 28, 3, 56, 84, 77, 36, 41, 18, 67, 69, 8, 50, 80, 38, 6, 90, 48, 45, 32, 94, 23, 73, 35, 91, 49, 9, 30, 78, 4, 68, 70, 31, 87]
102 
103 Process finished with exit code 0
打印结果

相关文章:

  • 2021-06-20
  • 2021-08-07
  • 2021-06-24
  • 2022-01-30
  • 2021-09-06
猜你喜欢
  • 2021-08-25
  • 2021-05-22
  • 2021-05-26
  • 2021-05-04
  • 2021-09-13
  • 2022-01-01
相关资源
相似解决方案