Merge Sort  

Data structure  Array 
Worstcase performance  O(n log n) 
Bestcase performance  O(n log n) typical, O(n) natural variant 
Average performance  O(n log n) 
Worstcase space complexity  О(n) total with O(n) auxiliary, O(1) auxiliary with linked lists 
In computer science, merge sort (also commonly spelled mergesort) is an efficient, generalpurpose, comparisonbased sorting algorithm. Most implementations produce a stable sort, which means that the implementation preserves the input order of equal elements in the sorted output.
An example of merge sort. First divide the list into the smallest unit (1 element), then compare each element with the adjacent list to sort and merge the two adjacent lists. Finally all the elements are sorted and merged.
A recursive merge sort algorithm used to sort an array of 7 integer values. These are the steps a human would take to emulate merge sort (topdown).
Language  Source 

merge_sort.c  
merge_sort.cpp  
MergeSort.java  
mergesrt 
