MergeSort(array, start, stop)
- if start < stop
- mid=(start+stop/2)
- MergeSort(array, start, mid)
- MergeSort(array, mid+1, stop)
- Merge(array, start, mid, stop)
Merge(array, start, mid, stop)
- n1 = mid-start +1
- n2 = stop - mid
- L = new[n1]
- R = new[n2]
- for i= 1 to n1
- L[i] = array[start+i-1]
- for i = 1 to n2
- R[i] = array[mid+i]
- L[n1+1] = inf
- R[n2+1] = inf
- i = 1
- j = 1
- for k = start to stop
- if L[i] < R[j]
- array[k]=L[i]
- i = i + 1
- else
- array[k] = R[j]
- j = j + 1
- delete L
- delete R
T(n) = 2T(n/2) + C(n)