Cx_oo 2023-03-31 10:27 采纳率: 30%
浏览 15

归并排序运行结果错误,如何解决?(语言-c++)

归并排序运行结果错误
代码如下
请帮忙看一下

#include <iostream>
using namespace std;

void Merge_sort(int a[],int q,int p,int temp[]);
void Merge(int a[],int q,int s,int p,int temp[]);

int main()
{
    int a[10]={4,32,8,12,53,9,3,7,2,17};
    int b[10];
    int x=sizeof(a)/sizeof(int);
    Merge_sort(a,0,x-1,b);
    for(int i=0;i<x;i++)
        cout<<a[i]<<" , ";
    return 0;
}
void Merge_sort(int a[],int q,int p,int temp[])
{
    if(q<p)
    {
        int s=q+(p-q)/2;
        Merge_sort(a,q,s,temp);
        Merge_sort(a,s+1,p,temp);
        Merge(a,q,s,p,temp);
    }
}
void Merge(int a[],int q,int s,int p,int temp[])
{
    int pb=0;
    int p1=q,p2=s+1;
    while(p1<=s&&p2<=p)
    {
        if(a[p1]<a[p2])
            temp[pb++]=a[p1++];
        else
            temp[pb++]=a[p2++];
    }
    while(p1<=s)
        temp[pb++]=a[p1++];
    while(p2<p)
        temp[pb++]=a[p2++];
    for(int i=0;i<p-q+1;i++)
        a[s+i]=temp[i];
}



  • 写回答

3条回答 默认 最新

  • threenewbee 2023-03-31 10:33
    关注

    目测 while 循环条件改为 p2<=p

    评论

报告相同问题?

问题事件

  • 创建了问题 3月31日