python - 我已经编写了合并排序的代码。但是我无法返回排序值如何返回排序列表
问题描述
我为合并排序编写了两个函数:
def mergesort1(c, l, r):
i, j, k = 0, 0, 0
while (i < len(l)) & (j < len(r)):
if l[i] < r[j]:
c[k] = l[i]
i += 1
else:
c[k] = r[j]
j += 1
k += 1
while i < len(l):
c[k] = l[i]
i += 1
k += 1
while j < len(r):
c[k] = r[j]
j += 1
k += 1
def mergesort(c):
if len(c) < 2:
return c
l = c[0 : (len(c) // 2)]
r = c[len(c) // 2 : len(c)]
mergesort(l)
mergesort(r)
mergesort1(c, l, r)
我无法返回函数的排序值
解决方案
您正在对列表进行就地排序:排序结果在原始列表中。如果您想在不修改原始列表的情况下返回包含结果的新列表:
def mergesort1(l,r):
c = [0]*(len(l) + len(r))
i,j,k=0,0,0
while (i<len(l))&(j<len(r)):
if l[i]<r[j]:
c[k]=l[i]
i +=1
else:
c[k]=r[j]
j +=1
k +=1
while i<len(l):
c[k]=l[i]
i+=1
k+=1
while j<len(r):
c[k]=r[j]
j+=1
k+=1
return c
def mergesort(c):
if len(c)<2:
return list(c)
l = mergesort(c[0:(len(c)//2)])
r = mergesort(c[len(c)//2:len(c)])
return mergesort1(l,r)
推荐阅读
- java - 请为我解释代码的这些部分
- python - python discord bot 临时语音通道
- pandas - 检索 Pandas DataFrame 中最后一个非 None 值
- docker - 在 Java 程序中列出 Google Container Registry 中的图像
- javascript - Cloud Firestore 在查询时没有排序问题
- python - 如何使用 BeautifulSoup 获取最后一个 URL 链接元素
- amazon-web-services - Aws CDK 跳过 IAM 语句更改
- powerbi - 如果至少一行包含值,则 Power BI 计数
- colors - 无法更改地址栏的颜色或在移动设备中添加图标
- python - 一个文档中的嗖嗖声频率