# -*- coding: UTF-8 -*- def merge(left, right): i, j = 0, 0 result = [] while i < len(left) and j < len(right): if left[i] <= right[j]: result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 result += left[i:] result += right[j:] return result def merge_sort(lists): if len(lists) <= 1: return lists num = len(lists) / 2 left = merge_sort(lists[:num]) right = merge_sort(lists[num:]) return merge(left, right)
感觉解释起来比较麻烦,总的来说就是分治法。
以下摘自百度百科。。。
原文:http://www.cnblogs.com/webgavin/p/5263827.html