Sy_Faker 2020-03-24 16:57 采纳率: 25%
浏览 102
已采纳

尝试数据结构中的mergesearch失败

最近在学数据结构和算法,想简单模拟一下向量的归并排序

#include<iostream>
using namespace std;
class vector
{
    int* num;
    public:
        vector(int *k)
        {
            num=k;
        }
        void mergesort(int,int);
        void merge(int,int,int);
        void display()
        {
            for(int i=0;i<10;i++)
            cout<<num[i]<<endl;
        }
};
void vector::mergesort(int low,int high)
{
    if(high-low<2)return;
    int mi=(low+high)/2;
    mergesort(low,mi);
    mergesort(mi,high);
    merge(low,mi,high);
}
void vector::merge(int low,int mi,int high)
{
    int* A=num+low;
    int lenb=mi-low;
    int *B=new int[lenb];
    for(int i=0;i<lenb;i++)B[i]=A[i];
    int lenc=high-mi;
    int *C=num+mi;
    for(int i=0,j=0,k=0;(j<lenb)||(k<lenc);)
    {
        if((j<lenb)&&(lenc<=k||(B[j]<=C[k])))A[i++]=B[j++];
        if((k<lenc)&&(lenb<=j||(C[k]<B[j])))A[i++]=C[k++];
    }
    delete[]B;
}
int main()
{
    int *k;
    for(int i=0;i<10;i++)
        cin>>k[i];
    cout<<"一开始"<<endl;
    for(int i=0;i<10;i++)
        cout<<" "<<k[i];
    cout<<endl;
    vector v(k);
    v.mergesort(0,10);
    v.display();
}

图片说明

出现了一些错误

  • 写回答

2条回答 默认 最新

  • 世当珍惜 2020-03-24 21:35
    关注

    你的main函数中的k没有给他new一个数组,所以你cin的时候程序就崩了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真