MKDLFDKFL 2022-09-30 21:20 采纳率: 66.7%
浏览 67
已结题

C++用递归方法写归并排序


#include<iostream>
using namespace std;
/*void Merge(int *A,int p,int q,int r)
{
    int n1 = q - p + 1;
    int n2 = r - q;
    int L[n1 + 1];
    int R[n2 + 1];

    for(int i = 1; i <= n1; i++)
    {
        L[i] = A[p + i - 1];
    }

    for(int j = 1; j <= n2 ; j++)
    {
        R[j] = A[q + j];
    }

    int i = 1,j = 1;

    for(int k = p; k <= r; k++)
    {
        if(L[i]<=R[j])
        {
            A[k] = L[i];
            i++;
        }
        else{
            A[k] = R[j];
            j++;
        }
    }

}
*/

void Merge(int* A, int low, int mid, int high)
{
    int i, j, k;
    int* B = new int[sizeof(int)*high];
    for (int i = 1; i < high - low - 2; i++)
    {
        cout << B[i] << " ";
    }
    cout << endl;
    i = low;
    j = mid + 1;
    k = low;
    while (i <= mid && j <= high)
    {
        if (A[i] < A[j])
        {
            B[k++] = A[i++];
        }
        else
        {
            B[k++] = A[j++];
        }
    }
        while (i <= mid)
        {
            B[k++] = A[i++];
        }

        while (j <= high)
        {
            B[k++] = A[j++];
        }

        for (int i = 1; i <= high; i++)
        {
            cout << B[i] << " ";
        }
        cout << endl;
    
}
void Merge_Sort(int* A, int low, int high)
{
    int mid;
    if (low < high)
    {
        mid = ((low + high) / 2);
        Merge_Sort(A, low, mid);
        Merge_Sort(A, mid + 1, high);
        Merge(A, low, mid, high);
    }

}


int main()
{
    int A[11] = { 0,10,9,8,7,6,5,4,3,2,1 };

    Merge_Sort(A, 1, 10);

    for (int i = 1; i <= 10; i++)
    {
        cout << A[i] << " ";
    }

    return 0;
}

这是一个递归的归并排序,我不知道哪里错了.希望能有一个正确的答案

  • 写回答

3条回答

      报告相同问题?

      问题事件

      • 系统已结题 10月8日
      • 创建了问题 9月30日

      悬赏问题

      • ¥30 关于Java文件处理的问题
      • ¥15 想问一下,这个图怎么写程序才能实现左边两位0到99秒计时啊?或者是左边两99秒到0右边两位显示当天日期
      • ¥30 用Rsync出现报错
      • ¥30 Java建模,处理文件和对象
      • ¥15 linux磁盘怎样重新挂载到原挂载路径下
      • ¥30 Java的类和静态方法
      • ¥15 存在一定规律的数据转置和整理
      • ¥15 关于flowable工作流开发的一个问题
      • ¥20 VBA如何用代码在onedrive创建文件夹?
      • ¥15 多理发师睡眠问题,2个理发师,n个座椅