一、详细调整过程(不打印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