//Merge_sort #include <iostream> using namespace std; void Merge(int *a,int p,int q,int r) { int left=q-p+1; int right=r-q; int *lary=new int[left+1]; int *rary=new int[right+1]; int i,j,k; for(i=0;i<left;i++) lary[i]=a[p+i-1]; lary[left]=INT_MAX; for(i=0;i<right;i++) rary[i]=a[q+i]; rary[right]=INT_MAX; i=j=0; for(k=p-1;k<r;k++) { if(lary[i]<rary[j]) { a[k]=lary[i]; i++; } else { a[k]=rary[j]; j++; } } delete lary; delete rary; } void Merge_Sort(int *a,int p,int r) { if(p<r) { int q=(p+r)/2; Merge_Sort(a,p,q); Merge_Sort(a,q+1,r); Merge(a,p,q,r); } } #include <iostream> using namespace std; int main() { int i; int a[]={6,5,4,3,2,1}; int len=sizeof(a)/sizeof(int); cout<<len<<endl; Merge_Sort(a,1,len); for(i=0;i<len;i++) cout<<a[i]<<" "; return 0; }