首页 > 学院 > 开发设计 > 正文

分治算法之归并排序

2019-11-06 08:34:45
字体:
来源:转载
供稿:网友

归并排序分两步: 第一步:将数组递归分为两部分。 第二步:将两部分数组递归合并为一个数组。

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)
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表