1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| void mergeTwoArray(int a[], int lena, int b[], int lenb) { int* tmparray=new int[lena+lenb]; int i=0, j=0, k=0; while(i<lena && j<lenb) { if(a[i]<b[j]) { tmparray[k]=a[i]; i++,k++; } else { tmparray[k]=b[j]; j++,k++; } } while(i<lena) { tmparray[k]=a[i]; i++,k++; } while(j<lenb) { tmparray[k]=b[j]; j++,k++; } for(i=0; i<lena+lenb; i++) { a[i]=tmparray[i]; } delete [] tmparray; } void mergeSort(int a[], int n) { if(n>1) { int mid=n/2; int lena=mid; int lenb=n-mid; int* b=a+mid; mergeSort(a,lena); mergeSort(b,lenb); mergeTwoArray(a,lena,b,lenb); } }
|