升序合并排序到降序

问题描述

如您所见,目前我在这个合并排序问题上遇到了麻烦,而且我不知道如何将升序程序转换为相同格式的降序,如果有人可以帮助我的话,那真的很适合您。我对这种分类过程并不陌生,并且随着时间的流逝我正在慢慢学习,目前我是一名学生。非常感谢您的帮助!

private static void mergeSort(int[] array,int low,int high) 
{
    if (high <= low) 
        return;
    int mid = (low + high) / 2;
    mergeSort(array,low,mid);
    mergeSort(array,mid + 1,high);
    merge(array,mid,high);
}

private static void merge(int[] array,int mid,int high) 
{
    int leftArray[] = new int[mid - low + 1];
    int rightArray[] = new int[high - mid];
    for (int i = 0; i < leftArray.length; i++)
        leftArray[i] = array[low + i];
    for (int i = 0; i < rightArray.length; i++)
        rightArray[i] = array[mid + i + 1];
    int leftIndex = 0;
    int rightIndex = 0;
    for (int i = low; i < high + 1; i++)
    {
        if (leftIndex < leftArray.length && rightIndex < rightArray.length) 
        {
            if (leftArray[leftIndex] < rightArray[rightIndex]) 
            {
                array[i] = leftArray[leftIndex];
                leftIndex++;
            }
            else
            {
                array[i] = rightArray[rightIndex];
                rightIndex++;
            }
        }
        else if (leftIndex < leftArray.length) 
        {
            array[i] = leftArray[leftIndex];
            leftIndex++;
        } 
        else if (rightIndex < rightArray.length) 
        {
            array[i] = rightArray[rightIndex];
            rightIndex++;
        }
    }
}

解决方法

您需要做的就是更改将项目const NoneReChar = (str) => { let tempArr = str.split(''); let start = tempArr[0]; while (true) { tempArr.shift(); if (!tempArr.includes(start)) { return start; } else { tempArr.filter(char => char !== start); start = tempArr[0]; } } } console.log(NoneReChar("aaaabbbeccc"))与之比较的行

if (leftArray[leftIndex] < rightArray[rightIndex])
,

什么都没有真正改变。而不是这种比较

if (leftArray[leftIndex] < rightArray[rightIndex])

您需要进行此比较

if (leftArray[leftIndex] > rightArray[rightIndex])

其余代码保持不变。