【发布时间】:2022-11-28 12:25:43
【问题描述】:
我想使用 mergeSort 对数组进行降序排序
这是我按升序排列的 MergeSort 实现的代码
def MergeSort(B):
if len(B) <= 1:
return
mid = len(B)//2
half1 = B[:mid]
half2 = B[mid:]
reverseSort(half1)
reverseSort(half2)
merge(half1,half2,B)
def merge(half1, half2, B):
i=0; j1=0; j2=0
while j1<len(half1) and j2<len(half2):
if half1[j1] < half2[j2]:
B[i] = half1[j1]
j1 += 1; i += 1
else:
B[i] = half2[j2]
j2 += 1; i += 1
while j1 > len(half1):
B[i] = half1[j1]
j1 += 1; i += 1
while j2 > len(half2):
B[i] = half2[j2]
j2 += 1; i += 1
我尝试将以下 if 语句更改为此 如果 half1[j1] < half2[j2]:
但输出不正确
基本上我想要以下
B=["cat", "ca", "can", "cat", "cat"]
MergeSortReverse(B)
print(B) #["cat","cat","cat","can","ca"]
【问题讨论】:
标签: python