procedure mergeSort( A : list of sortable items ) if size of A > 1 find the index of the "middle" element create new list "left" which is a copy of all of the elements from the front of the original list to the middle element create new list "right" which is a copy of all of the elements from the middle element to the end of the original list mergeSort(left) mergeSort(right) #merge the two lists set index variables to 0 for left, right, and A while there is stuff left in both lists if the "next item" in left list < "next item" in right list next item in A = next item in left list increment left list index else next item in A = next item in right list increment right list index end if increment A list index end while #Now copy of the remaining elements from the lists while items left in left list next item in A = next item in left list increment left list index increment A list index end while while items left in right list next item in A = next item in left list increment left list index increment A list indes end while end if end procedure