// Merge Sort - Divide and Conquer /Recurssive method. // merge two sorted arrays A[l,...m] and A[m+1,..., r] // to form a single sorted array A[l,...,r] void merge(int *A, int l, int m, int r) { int n1= m -l +1; // The number of elements in the left array. int n2 = r -m; // The number of elements in the right array. int L[n1+1], R[n2+1]; for ( int i = 0; i < n1; ++i) L[i] = A[l + i ]; for ( int i = 0; i < n2; ++i) R[i] = A[m + i + 1]; L[n1] = 9999; // sentinel element R[n2] = 9999; int i = 0 , j = 0; for( int k = l; k <= r; ++k) { if ( L[i] <= R[j] ) { A[k] = L[i]; ++i; } else { A[k] = R[j]; ++j; } } } // end of merge()
Merge Sort
Posted at
6/16/2009 07:30:00 PM
The merge sort has a worst case running time of Θnlg(n).
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment