【问题标题】:Merge Sort in reverse反向合并排序
【发布时间】: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


    【解决方案1】:

    如果有帮助,请接受为答案

    def merge_sort_descending(arr):
        if len(arr) > 1:
            mid = len(arr) // 2
            left = arr[:mid]
            right = arr[mid:]
            merge_sort_descending(left)
            merge_sort_descending(right)
            i = j = k = 0
            while i < len(left) and j < len(right):
                if left[i] > right[j]:
                    arr[k] = left[i]
                    i += 1
                else:
                    arr[k] = right[j]
                    j += 1
                k += 1
            while i < len(left):
                arr[k] = left[i]
                i += 1
                k += 1
            while j < len(right):
                arr[k] = right[j]
                j += 1
                k += 1
    
    B=["cat", "ca", "can", "cat", "cat"]
    ['cat', 'cat', 'cat', 'can', 'ca']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 2010-12-28
      • 2019-05-14
      相关资源
      最近更新 更多