# Merge Sort

The merge sort works on the idea of merging two already sorted lists. If there existed two already sorted list, merging the two together into a single sorted list can be accomplished in O(n) time.

## Merge algorithm:

The algorithm to do so works as follows:

- Have a way to "point" at the first element of each of the two list
- compare the values being pointed at and pick the smaller of the two
- copy the smaller to the merged list, and advance the "pointer" of just that list to the next item.
- Continue until one of the list is completely copied then copy over remainder of the rest of the list

### Example

Here we have 2 sorted lists. Note that being already sorted is a must. This algorithm does not work on unsorted lists.

look at first element of each list and find smaller, copy it to the resulting list, then advance pointer.

between 2 and 3, 2 is smaller:

between 3 and 7, 3 is smaller:

between 5 and 7, 5 is smaller:

between 6 and 7, 6 is smaller:

between 7 and 9, 7 is smaller:

between 8 and 9, 8 is smaller:

list 2 is now empty, copy rest of list 1 over