本题用到了递归思想,如看不懂可以先去看汉诺塔问题。
题目是这样的输入数量n,然后输入n个数对其进行排序。
#includeusing namespace std; void Merge(int a[],int left,int mid,int right){ int *b = new int[right-left+1]; int i= left,j=mid+1,k=0; while(i<=mid && j<=right){ if(a[i]<=a[j]) b[k++]=a[i++]; else b[k++]=a[j++]; } while(i<=mid) b[k++]=a[i++];//将剩余的加入数组 while(j<=right) b[k++]=a[j++]; for(i = left,k=0;i<=right;i++)//放入原数组 a[i]=b[k++]; } //对俩个数组进行排序和合并 void MergeSort(int a[],int left,int right){ if(left >n; for(int i=0;i >a[i]; } MergeSort(a,0,n-1); for(int i=0;i 样例



