首页 > 解决方案 > 升序合并排序到降序

问题描述

正如你所看到的,目前我被困在这个合并排序问题上,我不知道如何将这个升序程序转换为相同格式的降序,如果有人可以帮助我,那你真的很好。我是这个排序过程的新手,我正在慢慢学习,目前我是一名学生。非常感谢您的帮助!

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, low, mid, high);
}

private static void merge(int[] array, int low, 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++;
        }
    }
}

标签: javamergesort

解决方案


您需要做的就是更改将项目if (leftArray[leftIndex] < rightArray[rightIndex])

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

推荐阅读