【发布时间】:2019-09-09 04:48:09
【问题描述】:
我正在挑战自己为了面试而手工编写代码,并且我创建了一个递归 MergeSort 的低于标准的实现。
这个概念基本上是采用两个列表“alist”和“blist”,并将它们组合/排序到列表“clist”中。假设列表在组合之前已排序且大小相同。
如何使原始代码(我知道它不能正常工作)反映模型代码(按预期工作)以尽可能少的更改?了解我的错误程度会对我有很大帮助。
原始代码:
alist = [1,5,8,9]
blist = [2,4,7,10]
clist = []
temp = []
def MergeSort(alist,blist):
if len(alist) > 1:
midpoint = len(alist)//2
MergeSort(alist[midpoint:],alist[:midpoint])
if len(blist) > 1:
midpoint = len(blist)//2
MergeSort(blist[midpoint:],blist[:midpoint])
if alist[0] < blist[0]:
temp[0] = alist[0]
alist[0] = blist[0]
blist[0] = temp[0]
MergeSort(alist,blist)
else:
alist[len(alist)] = blist[len(blist)-1]
MergeSort(alist,blist)
if blist[0] == None:
return alist
clist = MergeSort(alist,blist)
print(clist)
型号代码:
alist = [1,5,8,9]
blist = [2,4,7,10]
def MergeSort(alist, blist):
clist = []
if alist == [] and blist != []:
return clist + blist
if alist != [] and blist != []:
if alist[0] <= blist[0]:
clist.append(alist[0])
clist = clist + MergeSort(alist[1:], blist)
if alist[0] > blist[0]:
clist.append(blist[0])
clist = clist + MergeSort(alist, blist[1:])
return clist
print(MergeSort(alist,blist))
【问题讨论】:
标签: python list sorting recursion