博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法排序:归并排序
阅读量:4958 次
发布时间:2019-06-12

本文共 1001 字,大约阅读时间需要 3 分钟。

一、归并排序基本思想

归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。

分而治之

分解:将列表越分越小,直至分成一个元素。

一个元素是有序的。
合并:将两个有序列表归并,列表越来越大。

   可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。阶段可以理解为就是递归拆分子序列的过程,递归深度为log2n。

二、合并相邻有序子序列过程

三、归并排序代码

1、一次归并代码

def merge(li, low, mid, high):    i = low    	j = mid + 1    	ltmp = []    	while i <= mid and j <= high:        		if li[i] <= li[j]:            			ltmp.append(li[i])            			i += 1        		else:            			ltmp.append(li[j])            			j += 1    	while i <= mid:        		ltmp.append(li[i])        		i += 1    	while j <= high:        		ltmp.append(li[j])        		j += 1    	li[low:high + 1] = ltmp

2、归并排序

def _merge_sort(li,low,high):	if low < high:#至少两个元素		mid = (low + high) // 2		_merge_sort(li,low,mid)		_merge_sort(li,mid+1,high)		#merage(li,low,mid,high)		print(li[low:high+1])

四、归并排序性能分析

 

四、快速排序、堆排序、归并排序-小结

 

转载于:https://www.cnblogs.com/luoahong/p/9661769.html

你可能感兴趣的文章
Codeforces 984 扫雷check 欧几里得b进制分数有限小数判定 f函数最大连续子段
查看>>
json数据格式的理解
查看>>
PHP性能检测与优化—XHProf 数据阅读
查看>>
几种排序之归并排序
查看>>
【python】10分钟教你用python一行代码搞点大新闻
查看>>
Hadoop设置环境变量注意事项
查看>>
HDOJ 2602
查看>>
JavaScript数据结构与算法-队列练习
查看>>
005 动态加载实例
查看>>
《浪潮之巅》读书笔记——第8章 思科
查看>>
input类型上传多个文件(selenium+Python)
查看>>
2018web前端面试总结
查看>>
裸机开发步骤笔记
查看>>
HDUOJ----2485 Destroying the bus stations(2008北京现场赛A题)
查看>>
uva 10160
查看>>
sql基础语句(技巧)
查看>>
IIS 之 查看并发连接数
查看>>
第 2 章 生成、打包、部署和管理应用程序及类型
查看>>
Sqlite 多线程入库
查看>>
java多线程实例
查看>>