MERGE_SORT (A)
   Input: an array from 0 to A.size()-1 
   Output: the ordered array
-  if A.size > 1
 -      B,C ← SPLIT (A)
 -      MERGE_SORT(B)
 -      MERGE_SORT(C)
 -      A ← MERGE(B,C)
 
SPLIT(A)
   Input: A single array
   Output: The array split into two pieces
-  mid ← A.size/2
 -  B ← A[0 to mid]
 -  C ← B[mid+1 to A.size() -1]
 -  Return (B,C)
 
MERGE(A,B)
   Input: Two ordered lists 0 to size-1
   Ouptput: A single ordered array
-  posA ← 0
 -  posB ← 0
 -  posC ← 0
 -  While posA < A.size and posB < B.size
 -    if (A[posA] < B[posB] 
 -       C[posC] ← A[posA]
 -       posA ← posA + 1
 -    else
 -       C[posC] ← B[posB]
 -       posB ← posB + 1
 -    posC ← posC + 1
 -  While posA < A.size
 -    C[posC] ← A[posA]
 -    posA ← posA + 1
 -    posC ← posC + 1
 -  While posB < B.size
 -    C[posC] ← B[posB]
 -    posB ← posB + 1
 -    posC ← posC + 1
 -  Return C