#include<iostream> using namespace std; void sort(int a[],int first,int mid,int last,int temp[]) { int i=first; int j=mid; int count=0; while(1) { if(a[i]<a[j]) { temp[count++]=a[i++]; } else { temp[count++]=a[j++]; } if(i==mid) { while(j<last) temp[count++]=a[j++]; break; } if(j==last) { while(i<mid) temp[count++]=a[i]; break; } } for(int k=0;k<count;k++) { a[first+k]=temp[k]; } } void merge(int a[],int first,int last,int temp[]) { if(last>first) { int mid=(first+last)/2; merge(a,first,mid,temp); merge(a,mid+1,last,temp); sort(a,first,mid,last,temp); } } void main() { int a[]={1,4,7,9,12,2,5,9,11,13}; int last=sizeof(a)/sizeof(int); int* p =new int[last](); merge(a,0,last,p); for(int i=0;i<last;i++) { cout<<a[i]<<endl; } }