归并排序用vector的MLE?
查看原帖
归并排序用vector的MLE?
549521
boy♂Next♂dooor楼主2024/9/16 12:45

用了DEV的单步调试,发现到vector里面时会段错误。但不知怎么改

void merge_sort(int l,int r)
{
    if(l==r) return;
    int mid=l+(r-l)>>1;
    merge_sort(l,mid);
    merge_sort(mid+1,r);
	vector<int> tmp;
    int i=l,j=mid+1;
    while(i<=mid&&j<=r)
    {
        if(a[i]>a[j]) tmp.push_back(a[j++]);
        else tmp.push_back(a[i++]);
    }
    while(i<=mid) tmp.push_back(a[i++]);
    while(j<=r) tmp.push_back(a[j++]);
    for(int k=l;k<=r;k++) a[k]=tmp[k-l]; 
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    merge_sort(1,n);
    for(int i=1;i<=n;i++) cout<<a[i]<<' ';
    return 0;
}
2024/9/16 12:45
加载中...