# Python Program for Iterative Merge Sort

Following is a typical recursive implementation of Merge Sort that uses last element as pivot.

## Python

 `# Recursive Python Program for merge sort``def` `merge(left, right):``    ``if` `not` `len``(left) ``or` `not` `len``(right):``        ``return` `left ``or` `right``    ``result ``=` `[]``    ``i, j ``=` `0``, ``0``    ``while` `(``len``(result) < ``len``(left) ``+` `len``(right)):``        ``if` `left[i] < right[j]:``            ``result.append(left[i])``            ``i``+``=` `1``        ``else``:``            ``result.append(right[j])``            ``j``+``=` `1``        ``if` `i ``=``=` `len``(left) ``or` `j ``=``=` `len``(right):``            ``result.extend(left[i:] ``or` `right[j:])``            ``break``    ``return` `result``def` `mergesort(``list``):``    ``if` `len``(``list``) < ``2``:``        ``return` `list``    ``middle ``=` `len``(``list``)``/``2``    ``left ``=` `mergesort(``list``[:middle])``    ``right ``=` `mergesort(``list``[middle:])``    ``return` `merge(left, right)``    ``seq ``=` `[``12``, ``11``, ``13``, ``5``, ``6``, ``7``]``print``(``"Given array is"``)``print``(seq); ``print``(``"\n"``)``print``(``"Sorted array is"``)``print``(mergesort(seq))``# `