分治算法——归并排序

Levana ·
更新时间:2024-11-10
· 670 次阅读

算法设计与分析 分治法——归并排序

归并排序操作过程:

在这里插入图片描述

def mergesort(seq): #归并排序 if len(seq) <= 1: return seq mid = int(len(seq) / 2) # 将列表分成更小的两个列表 # 分别对左右两个列表进行处理,分别返回两个排序好的列表 left = mergesort(seq[:mid]) right = mergesort(seq[mid:]) return merging(left, right) # 对排序好的两个列表合并,产生一个新的排序好的列表 def merging(left, right): #合并两个已排序好的列表,产生一个新的已排序好的列表 result = [] # 新的已排序好的列表 i = 0 # left下标 j = 0 # right下标 # 对两个列表中的元素 两两对比。 # 将最小的元素,放到result中,并对当前列表下标加1 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 main(): seq = [] line = input().split(" ") #输入排序数列 for x in range(len(line)): seq.append(int(line[x])) result = mergesort(seq) #将数列进行归并排序 # for i in range(len(line)): #验证是否将输入的排序数列导进 # print(seq[i],end=" ") print('\n',result) #输出排序后的数列 if __name__=='__main__': main()

输入
8 3 2 9 7 1 5 4

输出
1 2 3 4 5 7 8 9


作者:破键重码



分治算法 归并排序 算法 排序

需要 登录 后方可回复, 如果你还没有账号请 注册新账号