Stable divide-and-conquer sort with predictable O(n log n) behavior.
Easy Explanation
Merge Sort splits the array into smaller pieces, sorts each piece, then merges them back in order.
Renderer Mode
`Simple` uses abstract, short-form-friendly visuals. `Advanced` keeps the current detailed view.
Comparisons
0
Writes
0
Merges
0
Depth
n/a
Press Play or Step to start execution.
function mergeSort(values):
if length(values) <= 1:
return values
mid <- floor(length(values) / 2)
left <- mergeSort(values[0..mid-1])
right <- mergeSort(values[mid..end])
return merge(left, right)
function merge(left, right):
output <- []
i <- 0
j <- 0
while i < length(left) and j < length(right):
if left[i] <= right[j]:
append left[i] to output
i <- i + 1
else:
append right[j] to output
j <- j + 1
append remaining left and right values to output
return output