Lecture Notes on 13 November 2009 # This function merges two sorted lists a and b def merge (a, b): c = [] aIdx = 0 bIdx = 0 while ((aIdx < len(a)) and (bIdx < len(b))): if (a[aIdx] < b[bIdx]): c.append (a[aIdx]) aIdx = aIdx + 1 else: c.append (b[bIdx]) bIdx = bIdx + 1 while (aIdx < len(a)): c.append (a[aIdx]) aIdx = aIdx + 1 while (bIdx < len(b)): c.append (b[bIdx]) bIdx = bIdx + 1 return c def main (): a = [1, 2, 5, 7, 9] b = [2, 3, 5, 8, 9, 11] c = merge (a, b) print c main() # Recursive code that implements the merge sort algorithm def mergeSort (a, lo, hi): if (lo < hi): mid = (lo + hi) / 2 mergeSort (a, lo, mid) mergeSort (a, mid + 1, hi) merge (a, lo, hi)