MKDLFDKFL 2022-09-30 23:43 采纳率: 66.7%
浏览 30
已结题

<算法导论第三版>的伪代码写的C++的归并排序

问题遇到的现象和发生背景

这是一个归并排序,是根据<算法导论第三版> 的伪代码写的,可是最终得到的结果总是错误的,不知道怎么回事总会访问到特定的数组外但是也没有发生编译过程的错误.

用代码块功能插入代码,请勿粘贴截图
我想要达到的结果
#include<iostream>
using namespace std;

void Merge(int *A,int p,int q,int r)
{
    int n1 = q - p;
    int n2 = r - q;
    
    cout << "q-p=" << q - p << endl;
    int* L = new int[n1+1];
    int* R = new int[n2];

    for (int i = 0; i <= n1; i++)
    {
        L[i] = A[p + i];
        
    }
    
    for (int j = 0; j < n2; j++)
    {
        R[j] = A[q + j + 1];
    }
    int i = 0;
    int j = 0;

    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_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[10] = {10,9,8,7,6,5,4,3,2,1};
    int low = 0;
    int high = 9;
    int mid = (low + high) / 2;
    Merge(A, low, mid, high);
    Merge_Sort(A, 0, 9);

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

    cout << endl;
    
    return 0;
}

  • 写回答

2条回答

      报告相同问题?

      问题事件

      • 系统已结题 10月10日
      • 已采纳回答 10月2日
      • 创建了问题 9月30日

      悬赏问题

      • ¥30 用Rsync出现报错
      • ¥15 Java建模,处理文件和对象
      • ¥15 linux磁盘怎样重新挂载到原挂载路径下
      • ¥15 Java的类和静态方法
      • ¥15 存在一定规律的数据转置和整理
      • ¥15 关于flowable工作流开发的一个问题
      • ¥20 VBA如何用代码在onedrive创建文件夹?
      • ¥15 多理发师睡眠问题,2个理发师,n个座椅
      • ¥15 FPGA两按键控制led灯程序
      • ¥40 大学的python问题,用python解决