这个是分治代码中的第二步的合并代码
def hebin(lista, left, right):
mid = int((right - left) / 2 + left)
temp = []
i = left
j = mid + 1
while i < mid + 1 and j < right + 1:
if lista[i] > lista[j]:
temp.append(lista[j])
j += 1
else:
temp.append(lista[i])
i += 1
while i < mid + 1:
temp.append(lista[i])
i += 1
while j < right + 1:
temp.append(lista[j])
j += 1
mm = 0
for tt in range(left, right + 1):
lista[tt] = temp[mm]
mm += 1
该代码是第一步的分治代码
def fenzhi(lista, left, right): # 分治的函数
if right - left < 1:
return 0
else:
mid = int((right - left) / 2 + left)
fenzhi(lista, left, mid)
fenzhi(lista, mid + 1, right)
hebin(lista, left, right)
这是最后调用上述的两个函数
lista = [int(i) for i in input().split()]#该处是输入的一串数字直接存入列表
print(lista)
left = 0
right = len(lista) - 1
fenzhi(lista, left, right)
for i in lista:
print(i, end=" ")
注意,输入数字时,中间用空格表示