Mergesort LEGEND: Last column: ( call to mergesort ) return from mergesort via base case (sub-array of len 1) )+ return from mergesort, after copying back the recombined halves pre before the two recursive "conquer" calls L after having sorted the left half R after having sorted the right half C before copyback, after recombination in temp area Within array: [ beginning of portion to be sorted ] end of portion to be sorted | split point between left and right halves : separator between data portion and temp storage [ 5 2 4 6 1 3 ] ( [ 5 2 4 | 6 1 3 ] pre [ 5 2 4 ] 6 1 3 : ( [ 5 | 2 4 ] 6 1 3 : pre [ 5 ] 2 4 6 1 3 : ( [ 5 ] 2 4 6 1 3 : ) [ 5 | 2 4 ] 6 1 3 : L 5 [ 2 4 ] 6 1 3 : ( 5 [ 2 | 4 ] 6 1 3 : pre 5 [ 2 ] 4 6 1 3 : ( 5 [ 2 ] 4 6 1 3 : ) 5 [ 2 | 4 ] 6 1 3 : L 5 2 [ 4 ] 6 1 3 : ( 5 2 [ 4 ] 6 1 3 : ) 5 [ 2 | 4 ] 6 1 3 : R 5 [ 2 4 ] 6 1 3 : 2 4 C 5 [ 2 4 ] 6 1 3 : 2 4 )+ [ 5 | 2 4 ] 6 1 3 : 2 4 R [ 5 2 4 ] 6 1 3 : 2 4 5 C [ 2 4 5 ] 6 1 3 : 2 4 5 )+ [ 2 4 5 | 6 1 3 ] 2 4 5 L 2 4 5 [ 6 1 3 ] 2 4 5 ( 2 4 5 [ 6 | 1 3 ] 2 4 5 pre 2 4 5 [ 6 ] 1 3 : 2 4 5 ( 2 4 5 [ 6 ] 1 3 : 2 4 5 ) 2 4 5 [ 6 | 1 3 ] 2 4 5 L 2 4 5 6 [ 1 3 ] 2 4 5 ( 2 4 5 6 [ 1 | 3 ] 2 4 5 pre 2 4 5 6 [ 1 ] 3 : 2 4 5 ( 2 4 5 6 [ 1 ] 3 : 2 4 5 ) 2 4 5 6 [ 1 | 3 ] 2 4 5 L 2 4 5 6 1 [ 3 ] 2 4 5 ( 2 4 5 6 1 [ 3 ] 2 4 5 ) 2 4 5 6 [ 1 | 3 ] 2 4 5 R 2 4 5 6 [ 1 3 ] 1 3 5 C 2 4 5 6 [ 1 3 ] 1 3 5 )+ 2 4 5 [ 6 | 1 3 ] 1 3 5 R 2 4 5 [ 6 1 3 ] 1 3 6 C 2 4 5 [ 1 3 6 ] 1 3 6 )+ [ 2 4 5 | 1 3 6 ] 1 3 6 R [ 2 4 5 1 3 6 ] 1 2 3 4 5 6 C [ 1 2 3 4 5 6 ] 1 2 3 4 5 6 )+