梦想是代码一写就对 2023-03-28 20:32 采纳率: 65%
浏览 10
已结题

c++实现合并排序小调试问题


#include<iostream>
using namespace std;
void MergeSort(int a[],int left,int right);
void Merge(int c[],int d[],int l,int m,int r);
void Copy(int a[],int b[],int left,int right);
main()
{
    cout<<"请输入一组数:"<<endl;
    int a[4],b[4];
    for(int i=0;i<4;i++)
    cin>>a[i];
    MergeSort(a,0,3);
    for(int i=0;i<4;i++)
    cout<<a[i]<<" ";
}
void MergeSort(int a[],int left,int right)
{
    static int b[4];
    if(left<right)//至少有两个个元素 
    {
        int i=(left+right)/2;//取中点 
        MergeSort(a,left,i);
        MergeSort(a,i+1,right);
        Merge(a,b,left,i,right);//合并到数组b 
        Copy(a,b,left,right);//复制回数组a 
    }
}
void Merge(int c[],int d[],int l,int m,int r)//合并c[l:m]和c[m+1:r]到d[l:r] 
{
    int i=l,j=m+1,k=l;
    while((i<=m)&&(j<=r))
    {
        if(c[i]<=c[j])
        {
            d[k++]=c[i++];
        }
        else
        {
            d[k++]=c[j++];
        }
        if(i>m)
        {
            for(int p=j;p<=r;p++)
            d[k++]=c[p];
        }
        else
        {
            for(int q=i;q<=m;q++)
            d[k++]=c[q];
        }
    }
}
void Copy(int a[],int b[],int left,int right)
{
    for(int i=left;i<=right;i++)
    {
        a[i]=b[i];
        cout<<b[i]<<endl;
    }
}

总觉得好像是b[]的定义有问题,如果两个数结果是对的,但是3个或者4个数就有问题,帮忙调试一下看看可以吗

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-03-28 20:39
    关注

    class student 的定义中,数据成员 char sex; 后面需要加上一个分号。

    class student 的定义中,成员函数 void display() 应该是 public 访问权限,但是没有显式地声明。

    main() 函数中,应该先调用 stud1.set_value() 来赋初值,再调用 stud1.display() 来输出成员变量的值。

    void Merge(int c[],int d[],int l,int m,int r) 函数中,如果 i 的值小于等于 m,应该用花括号把下面的两个 for 循环包起来,否则会出现数组越界的错误。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月2日
  • 创建了问题 3月28日

悬赏问题

  • ¥15 如何构建全国统一的物流管理平台?
  • ¥100 ijkplayer使用AndroidStudio/CMake编译,如何支持 rtsp 直播流?
  • ¥20 和学习数据的传参方式,选择正确的传参方式有关
  • ¥15 这是网络安全里面的poem code
  • ¥15 用js遍历数据并对非空元素添加css样式
  • ¥15 使用autodl云训练,希望有直接运行的代码(关键词-数据集)
  • ¥50 python写segy数据出错
  • ¥20 关于线性结构的问题:希望能从头到尾完整地帮我改一下,困扰我很久了
  • ¥30 3D多模态医疗数据集-视觉问答
  • ¥20 设计一个二极管稳压值检测电路