将一个list分为两份地时候产生两个新list,L和R。从而避免了边界问题和映射时地对齐问题。python不能++,对齐真的麻烦。
N = int(input())
sequence = list(map(int, input().split()))
def merge_sort(my_list):
if len(my_list) > 1:
mid = len(my_list) >> 1
L, R = my_list[:mid], my_list[mid:]
merge_sort(L)
merge_sort(R)
i, j, k = 0, 0, 0
while i < len(L) and j < len(R):
if L[i] < R[j]:
my_list[k] = L[i]
i += 1
else:
my_list[k] = R[j]
j += 1
k += 1
while j < len(R):
my_list[k] = R[j]
k += 1
j += 1
while i < len(L):
my_list[k] = L[i]
k += 1
i += 1
merge_sort(sequence)
print(' '.join(list(map(str, sequence))))
为啥调试编译出错