归并排序分两步: 第一步:将数组递归分为两部分。 第二步:将两部分数组递归合并为一个数组。
def mergeSort(l1): PRint('mergeSort:',l1) length = len(l1) if length == 1: return l1 mid = int(length / 2) l = [] merge(mergeSort(l1[0:mid]), mergeSort(l1[mid:length]), l) return ldef merge(l1, l2, l): print('merge:',l, l1, l2) if l2 == None or l2 == []: for i in l1: l.append(i) return if l1 == None or l1 == []: for i in l2: l.append(i) return #将两部分数组的第一个元素进行比较 #选出较小的值最为排好序数组的头元素 #再将剩下的两个数组与该头元素链接起来 if l2[0] < l1[0]: l.append(l2[0]) merge(l1, l2[1:], l) else: l.append(l1[0]) merge(l1[1:], l2, l)新闻热点
疑难解答