On Thu, Dec 22, 2016 at 11:55 AM, Deborah Swanson <pyt...@deborahswanson.net> wrote: > The problem is that while mergeSort puts the list ls in perfect order, > which I can see by looking at result on merge's final return to > mergeSort, and at the left and the right once back in mergeSort. Both > the left half and the right half are in order. But the list L is still > in its original order, and after mergeSort completes, ls is still in its > original order. Maybe there's some bonehead error causing this, but I > just can't see it. >
Your analysis is excellent. Here's what happens: When you merge-sort, you're always returning a new list (either "return L[:]" or "result = []"), but then you call it like this: # sort: Description only, to make hyperelinks & find duplicates mergeSort(ls) This calls mergeSort, then drops the newly-sorted list on the floor. Instead, try: "ls = mergeSort(ls)". Thank you for making it so easy for us! ChrisA -- https://mail.python.org/mailman/listinfo/python-list