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