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

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

归并:将两个或两个以上的有序表组合成一个新的有序表

2-路 归并排序

排序过程

  1. 初始序列看成n个有序子序列,每个子序列长度为1

  2. 两两合并,得到n/2个长度为2或1的有序子序列

  3. 再两两合并,重复直至得到一个长度为n的有序序列为止

这里写图片描述

void Merge(RedType R[],RedType &T[],int low,int mid,int high)  {          i=low;j=mid+1;k=low;          while(i<=mid&&j<=high){      if(R[i].key<=R[j].key) T[k]=R[i++];     else T[k]=R[j++];}        while(i<=mid)        T[k++]=R[i++];         while(j<=high)         T[k++]=R[j++];}

算法分析时间效率:O(nlog2n)

空间效率:O(n)

稳定性:稳定

排序算法比较

1.为避免顺序存储时大量移动记录的开销,可以考虑用链式作为存储结构

直接插入排序、归并排序

2.不宜采用链式作为存储结构的

折半插入排序、希尔排序、快速排序、堆排序

排序算法选择规则

n较大时

(1)分布随机,稳定性不做要求,则采用快速排序

(2)内存允许,要求排序稳定时,则采用归并排序

(3)可能会出现正序或逆序,稳定性不做要求,则采用堆排序或归并排序

n较小时

(1)基本有序,要求稳定,则采用直接插入排序

(2)分布随机,稳定性不做要求,则采用直接选择排序,若排序码不接近逆序,也可以采用直接插入排序。

你可能感兴趣的文章
Linux——解决apache"300 Multiple Choices"
查看>>
Macbook Pro Retina实现OSX10.10 Yosemite 和Win7双系统(Win7多分区)
查看>>
qt 学习之路2
查看>>
IOS学习之 导航栏
查看>>
SNMP网络监控
查看>>
我的友情链接
查看>>
模糊查询like的写法问题
查看>>
我的友情链接
查看>>
yum安装lamp分离教程
查看>>
Java基础学习总结(22)——异常处理
查看>>
深信服NGAF 虚拟网线模式部署案例
查看>>
Java注释模板
查看>>
Java基础学习总结(14)——Java对象的序列化和反序列化
查看>>
从数据库导出到excel
查看>>
网络监测小命令
查看>>
Docker镜像与容器命令
查看>>
Spring学习总结(4)——Spring AOP教程
查看>>
域控制器降级失败后删除数据的方法
查看>>
BZOJ2557[Poi2011]Programming Contest——匈牙利算法+模拟费用流
查看>>
程序员面试100题之12
查看>>