归并排序运行结果错误
代码如下
请帮忙看一下
#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];
}