说明:归并部分借鉴了bilibili上路飞学堂的老师讲课程序,有merge_sort和merge两个函数;对merge部分进行了修改,把排序改成了交换;largestNumber为自己编写。
代码如下:
# 报错:RuntimeError: maximum recursion depth exceeded
# 修改Python最大递归深度
import sys
sys.setrecursionlimit(1000000) # 100万
class Solution(object):
# 一趟归并函数
def merge(self, li, low, mid, high):
# print(li)
i = low
# mid = (low+high) // 2
j = mid + 1
ltmp = [] # 临时列表
while i <= mid and j <= high: # 左右两边都有数
if li[i] + li[j] > li[j] + li[i]: #修改部分
ltmp.append(li[i])
i += 1
else:
ltmp.append(li[j])
j += 1
# 有一边的数没了
while i <= mid: # 右边的数没了
ltmp.append(li[i])
#