代码如下:
#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,但是不知道什么原因