I have this, and it works:
# E. Given two lists sorted in increasing order, create and return a merged # list of all the elements in sorted order. You may modify the passed in lists. # Ideally, the solution should work in "linear" time, making a single # pass of both lists. def linear_merge(list1, list2): finalList =  for item in list1: finalList.append(item) for item in list2: finalList.append(item) finalList.sort() return finalList # +++your code here+++ return
But, I'd really like to learn this stuff well. :) What does 'linear' time mean?
Linear means O(n) in Big O notation, while your code uses a
sort() which is most likely
The question is asking for the standard merge algorithm. A simple Python implementation would be:
def merge(l, m): result =  i = j = 0 total = len(l) + len(m) while len(result) != total: if len(l) == i: result += m[j:] break elif len(m) == j: result += l[i:] break elif l[i] < m[j]: result.append(l[i]) i += 1 else: result.append(m[j]) j += 1 return result >>> merge([1,2,6,7], [1,3,5,9]) [1, 1, 2, 3, 5, 6, 7, 9]