代码:

#include<iostream>
using namespace std;
#define MAXSIZE 20//顺序表的最大长度
typedef int KeyType;//定义关键字类型为整型
typedef int InfoType;
typedef struct
{KeyType key;//关键字项InfoType otherinfo;//其他数据项
}RedType;
typedef struct
{RedType r[MAXSIZE+1];//r[0]闲置或做哨兵单元int length;//顺序表的长度
}SqList;//顺序表类型void Merge(RedType R[],RedType T[],int low,int mid,int high)
{//将有序表R[low..mid]和R[mid+1,high]归并为有序表T[low..high]int i=low,j=mid+1,k=low;while(i<=mid&&j<=high)//将R中的记录由小到大地并入T中{if(R[i].key<R[j].key)T[k++]=R[i++];elseT[k++]=R[j++];}while(i<=mid)//将剩余的R[i..mid]复制到T中T[k++]=R[i++];while(j<=high)//将剩余的R[j..high]复制到T中T[k++]=R[j++];
}void MSort(RedType R[],RedType T[],int low,int high)
{//将有R[low..high]归并为T[low..high]RedType S[20];if(low==high)T[low]=R[low];else{int mid=(low+high)/2;MSort(R,S,low,mid);MSort(R,S,mid+1,high);Merge(S,T,low,mid,high);}
}void MergeSort(SqList &L)//对顺序表L做归并排序
{MSort(L.r,L.r,1,L.length);
}int main()
{SqList L;for(int i=1;i<=10;i++)L.r[i].key=11-i;L.length=10;for(int i=1;i<=L.length;i++)cout<<L.r[i].key<<" ";cout<<endl;MergeSort(L);for(int i=1;i<=L.length;i++)cout<<L.r[i].key<<" ";cout<<endl;return 0;
}

运行结果:

数据结构之归并排序图文详解及代码(C++实现)相关推荐

  1. 数据结构之快速排序图文详解及代码(C++实现)

    代码: #include<iostream> using namespace std; #define MAXSIZE 20//顺序表的最大长度 typedef int KeyType;/ ...

  2. android代码查找快捷键是什么,Android Studio搜索功能(查找功能)及快捷键图文详解(示例代码)...

    1.在当前窗口查找文本[Ctrl+F] F3 向下查找关键字出现位置 Shift+F3 向上一个关键字出现位置 2.在当前工程内查找文本[Ctrl+Shift+F] 先会弹出一个对话框,直接点击[fi ...

  3. 数据结构之堆栈排序图文详解及代码(C++实现)

    代码: #include<iostream> using namespace std; #define MAXSIZE 20//顺序表的最大长度 typedef int KeyType;/ ...

  4. 数据结构之希尔排序图文详解及代码(C++实现)

    问题: 对待排序的数组r[1..n]中的元素进行直接插入排序,得到一个有序的(从小到大)的数组r[1..n]. 算法思想: 1.第一趟取增量d1(d1<n)把全部记录分为d1个组,所有间隔为d1 ...

  5. 数据结构之折半插入排序图文详解及代码(C++实现)

    问题: 对待排序的数组r[1..n]中的元素进行直接插入排序,得到一个有序的(从小到大)的数组r[1..n]. 算法思想: 1.设待排序的记录存放在数组r[1..n]中,r[1]是一个有序序列. 2. ...

  6. 数据结构之直接插入排序图文详解及代码(C++实现)

    问题: 对待排序的数组r[1..n]中的元素进行直接插入排序,得到一个有序的(从小到大)的数组r[1..n]. 算法思想: 1.设待排序的记录存放在数组r[1..n]中,r[1]是一个有序序列. 2. ...

  7. 数据结构与算法之选择排序图文详解及代码 (C++实现)

    实现: #include<iostream> using namespace std; #define MAXSIZE 20//顺序表的最大长度 typedef int KeyType;/ ...

  8. Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解+完整代码)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:欧阳思海 github.com/OUYANGSIHAI/si ...

  9. SSM 实现支付宝支付功能(图文详解+完整代码)

    阅读本文大概需要 4 分钟. 前言 本教程详细介绍了如何使用ssm框架实现支付宝支付功能.本文章分为两大部分,分别是「支付宝测试环境代码测试」和「将支付宝支付整合到ssm框架」,详细的代码和图文解释, ...

最新文章

  1. 基于yolov5和deepsort的行人车辆的检测、跟踪和计数(课程设计)
  2. Atcoder Grand 011 C - Squared Graph
  3. 频率分布直方图组距如何确定_小猿圈Python开发之绘制频率分布直方图示例
  4. Performing User-Managed Database-18.7、Performing Complete User-Managed Media Recovery
  5. 求解两个非负整数的最大公约数(C语言实现)
  6. java6 disable ssl2.0_SpringBoot2.0如何启用https协议
  7. 全面开放270多项AI能力!百度大脑背后的技术到底有多强?
  8. mybatis 遍历数组_Mybatis中别名、插件与数据源配置
  9. hadoop MapReduce 输出结果中文乱码解决
  10. 概括计算机程序启动过程,计算机启动过程详解
  11. java计算机毕业设计基于安卓Android的团务智慧管理APP
  12. 基于ffmpeg的h264播放器无法播放HI3516开发板保存的h264码流的问题
  13. 电子设计教程53:555定时器工作原理与常见应用
  14. RS232电平与TTL电平转换
  15. antdesign 地图_Ant Design介绍
  16. 前后端分离跨域上传图片代码
  17. 苹果新专利:紧急情况下可用指纹或特定输入操作悄悄呼救
  18. 项目管理需要建立团队文化
  19. 你是不是程序员菜鸡,一句话就能证明!
  20. Parse error: syntax error, unexpected ''解决办法

热门文章

  1. React中的路由react-router
  2. 【Flask】数据的CRUD之更新和删除操作
  3. HTML5中各种标签总结(body标签)
  4. 02-缓存一致性---实现big.LITTLE、GPU 计算和企业应用
  5. [architecture]-ARM SMMU学习概念总结一篇就够了
  6. ARM Trustzone介绍-视频学习
  7. C语言用指针求两个矩阵的差,求破C语言用指针和函数求转置矩阵
  8. Win10 KMD驱动模板,应用层向内核传一个字符串,内核把它转成大写
  9. 结构体对齐,#pragma pack
  10. (32)第一个驱动程序