代码如下:
#include <iostream.h>
void orderarr(int a[],int i,int m,int n)
{
int *temp=new int[n-i+1];
int k=i;
for(int x=i,y=m+1;x<=m && y<=n;)
{
if(a[x]<a[y])
{
temp[i]=a[x];x++;i++;
}
else
{
temp[i]=a[y];y++;i++;
}
}
//拷贝剩余的部分
for(;x<=m;x++,i++)
{
temp[i]=a[x];
}
for(;y<=n;y++,i++)
{
temp[i]=a[y];
}
for(;k<=n;k++)
{
a[k]=temp[k];
}
delete[] temp;
}
void twoorder(int arr[],int i,int j)
{
if(i<j)
{
int m=(i+j)/2;
twoorder(arr,i,m);
twoorder(arr,m+1,j);
orderarr(arr,i,m,j);
}
}
int main()
{
int arr[6]={5,6,1,2,3,0};
twoorder(arr,0,5);
// orderarr(arr,0,1,3);
for(int i=0;i<6;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
return 0;
}
会出现BUG,但是不知道什么原因