归并排序是分而治之的典型用法,其实现大致有4个步骤
1: 如果排序列表的长度为0或1,说明已经排序,直接返回。
2:把未排序列表从中间分为2个列表
3:递归的排序2个子列表
4:合并这2个子列表
归并排序的优点:
1:在小列表上排序所需的步骤元少于大列表排序的步骤
2:从2个有序的列表中构建有序列表所需步骤远少于未排序的2个的合并步骤
function mergesort(m)
var list left, right, result
if length(m) ≤ 1
return m
var middle = length(m) / 2
for each x in m up to middle
add x to left
for each x in m after middle
add x to right
left = mergesort(left)
right = mergesort(right)
result = merge(left, right)
return result
function merge(left,right)
var list result
while length(left) > 0 and length(right) > 0
if first(left) ≤ first(right)
append first(left) to result
left = rest(left)
else
append first(right) to result
right = rest(right)
end while
if length(left) > 0
append rest(left) to result
if length(right) > 0
append rest(right) to result
return result
分享到:
相关推荐
用Netbeans基于Java开发的遗传算法和交互式遗传算法平台,内含源代码,jar包等. 包含了: (1)传统遗传算法在函数优化中的应用,你可以仿照其中的代码加入自己的函数进行优化; (2)交互式遗传算法在服装设计、分形...
(共三卷,只有第一卷收费)光线跟踪算法技术 [美]萨芬著 刘天慧译(清华大学出版社) 2011.zip.001
实现了GIS基础算法之一凸壳算法。可快速构建点集凸壳
分割数组算法分割数组算法分割数组算法分割数组算法分割数组算法分割数组算法
C语言常见的排序算法,有冒泡排序,选择排序,归并排序,快速排序等常见的排序算法,自己保存数据 C语言常见的排序算法,有冒泡排序,选择排序,归并排序,快速排序等常见的排序算法,自己保存数据
Matlab卡尔曼滤波器算法实现-shiliang001.m 矢量卡尔曼滤波器算法的实现
(3)较Ver 0.001版,主要改变在于:(a)选择算子不再采用轮盘赌,大多数采用三角选择算子代替。从而去掉适应度函数正负一致性的要求。(b)去掉了match和TGAEyebrow和SAT应用三个内容。(c)修改了乐曲进化前输入曲子...
为了减小锁相环的锁定时间,提高时钟稳定性,在传统的顺序搜索自动频率校正算法电路的基础上,提出了一种新的二进制搜索算法校正电路,并且应用于5 GHz的锁相环中,最大校正时间为22.5 μs。锁相环在SMIC 55 nm CMOS...
PHP程序员算法题汇总,经典算法题仅供学习研究。
Python版人工智能算法合集含示例代码,含遗传算法、粒子群算法、模拟退火、蚁群算法、免疫优化算法、鱼群算法,旅行商问题
C语言经典算法大全!!!强烈推荐!!里面包含了各种经典的算法及C语言代码实现
微软 google面试题,经典算法 平衡树 海量数据处理 数字图像处理等内容; 内容很多,很杂 还有题目没给出答案。共4份,1分
本书全面讲述算法和数据结构的必备知识,具有以下几大特色。 算法领域的经典参考书 Sedgewick畅销著作的最新版,反映了经过几十年演化而成的算法核心知识体系 内容全面 全面论述排序、搜索、图处理和字符...
操作系统若干算法的FLASH演示过程,上课使用,效果反映不错,供大家参考
高斯赛德尔算法是解线性方程组的迭代算法的一种,文件中只包含一个高斯赛德尔算法的函数。
半数值算法,Donald E.Knuth 著).001 计算机程序设计艺术(第三版,中文版,第二卷:半数值算法,Donald E.Knuth 著).002 计算机程序设计艺术(第三版,中文版,第二卷:半数值算法,Donald E.Knuth 著)....
最好的算法入门书,配合在线课程。 高清扫描(4-1)
此压缩文档中包含的是《妙趣横生的算法》一书中的源代码,欢迎大家下载并参考、学习!
01-001数据结构的概念和基本术语、抽象数据类型的表示与实现 01-002算法设计的要求、算法效率的度量 02-001线性表的类型定义 02-002线性表的顺序表示与实现、线性表的基本操作 02-003单链表的创建与操作、加工型...
输入 : a1,a2,a10,a001 我们知道,如果按照字符串比较,结果应该是 a001,a1,a10,a2,但我们期望的结果应该是a001,a1,a2,a10. 自己写了一个算法,请参考,或者有更好的算法,请赐教