MergeSort.md (887B)
1 # Merge Sort 2 3 CLRS 2.3 4 5 **Definition:** Merge sort is an algoritmh that uses [DivideAndConquer](DivideAndConquer.md) to sort a list in log linear (n log(n)) time. 6 7 Sample Implementation: 8 9 ```python3 10 11 def merge(ls): 12 13 # Base case length of 1 14 if len(ls) == 1: 15 return ls 16 17 # Split list in half 18 pivot = int(len(ls) / 2) 19 left = ls[0 : pivot] 20 right = ls[pivot :] 21 22 # Recurse 23 left = merge(left) 24 right = merge(right) 25 26 leftPos = 0 27 rightPos = 0 28 sorted = [] 29 30 # Merge lists (O(n)) 31 while leftPos < len(left) and rightPos < len(right): 32 if left[left Pos] < right[right Pos]: 33 sorted.append(left[left Pos]) 34 leftPos += 1 35 else: 36 sorted.append(right[right Pos]) 37 rightPos += 1 38 39 sorted.extend(left[leftPos:]) 40 sorted.extend(right[rightPos:]) 41 42 return sorted 43 44 ```