满意答案

hzysh1970

推荐于 2016.08.07

采纳率:54%    等级:12

已帮助:7597人

#include

#include

typedef int RecType;//要排序元素类型

void Merge(RecType *R,int low,int m,int high)

{//将两个有序的子文件R[low..m)和R[m+1..high]归并成一个有序的子文件R[low..high]

int i=low,j=m+1,p=0; //置初始值

RecType *R1; //R1是局部向量

R1=(RecType *)malloc((high-low+1)*sizeof(RecType));

if(!R1)return; //申请空间失败

while(i<=m&&j<=high) //两子文件非空时取其小者输出到R1[p]上

R1[p++]=(R[i]<=R[j])?R[i++]:R[j++];

while(i<=m) //若第1个子文件非空,则复制剩余记录到R1中

R1[p++]=R[i++];

while(j<=high) //若第2个子文件非空,则复制剩余记录到R1中

R1[p++]=R[j++];

for(p=0,i=low;i<=high;p++,i++)

R[i]=R1[p];//归并完成后将结果复制回R[low..high]

}

void MergeSort(RecType R[],int low,int high)

{//用分治法对R[low..high]进行二路归并排序

int mid;

if(low

mid=(low+high)/2;//分解

MergeSort(R,low,mid);//递归地对R[low..mid]排序

MergeSort(R,mid+1,high); //递归地对R[mid+1..high]排序

Merge(R,low,mid,high);//组合,将两个有序区归并为一个有序区

}

}

void main()

{

int a[8]={21,34,56,43,99,37,78,10};//这里对8个元素进行排序

int low=0,high=7;//初始化low和high的值

MergeSort(a,low,high);

for(int i=low;i<=high;i++)printf("%d ",a[i]);//输出测试

printf("\n");

}

00分享举报

2路归并排序算法c语言,用二路归并排序算法实现N个元素的排序相关推荐

  1. 对归并排序进行c语言编程实现,归并排序及C语言实现

    排序系列之(1)归并排序及C语言实现 有很多算法在结构上是递归的:为了解决一个给定的问题,算法需要一次或多次递归的调用其本身来解决相关的问题.这些算法通常采用分治策略:将原问题划分成n个规模较小而结构 ...

  2. 最近最久未使用页面置换算法C语言,LRU页面置换算法模拟-最近最久未使用置换算法...

    LRU页面置换算法模拟-最近最久未使用置换算法 LRU页面置换算法模拟-最近最久未使用置换算法|课程设计|计算机数据库课程设计 一.设计目的 1.用C语言实现最近最久未使用(LRU)置换算法. 2.了 ...

  3. java实现随机数生成算法_Java 语言实现的随机数生成算法

    广州疯狂软件学院拥有三大课程体系包括:java课程,android课程,ios课程,疯狂软件年终钜惠,报名java就业班,免费赠送基础班,名额有限,本月火热报名中,欢迎有志之士电话或者QQ咨询. [导 ...

  4. bwt比对算法 C语言,DNA比对算法:BWT

    DNA比对算法:BWT BWT算法,实质上是前缀树的一种实现.那么什么是前缀树呢? 一.前缀树 对于问题p in S?如果S=rpq,那么p为S前缀rp的一个后缀. 于是,为了判断p in S 是否成 ...

  5. 妙趣横生的算法(c语言实现),妙趣横生的算法(C++语言实现) 带目录完整pdf[4MB]

    <妙趣横生的算法(C++语言实现)>内容丰富,生动有趣,寓教于乐,旨在帮助读者学习数据结构和算法的相关知识,从而开阔眼界,培养编程兴趣,提高编程能力,增强求职的竞争力.如果您想提高自己对算 ...

  6. c语言程序设计 算法,C语言程序设计第二章算法

    <C语言程序设计第二章算法>由会员分享,可在线阅读,更多相关<C语言程序设计第二章算法(38页珍藏版)>请在人人文库网上搜索. 1.C程序设计,主讲人:袁丽,燕大里仁基础教学部 ...

  7. 短进程算法c语言,短进程优先算法C语言实现

    短进程优先算法C语言实现 1.本实验实现了短进程优先的进程调度操作,但因为是非抢占式,所以实现起来比较简单. 短进程优先算法是以作业的长短来计算优先级,作业越短,其优先级越高.作业的长短是以作业所要求 ...

  8. 数据拟合算法c语言实现,数据拟合算法剖析及C语言实现.doc

    数据拟合算法剖析及C语言实现 数据拟合算法剖析及C语言实现 [摘要]数据拟合在很多地方都有应用,主要用来处理实验或观测的原始离散数据.通过拟合可以更好的分析和解释数据.在引用前人的算法基础上,采用正交 ...

  9. 人工免疫算法c语言程序,基于人工免疫算法的模拟电路故障诊断

    摘要: 模拟电路故障诊断一直以来都是十分必要和有意义的,目前已成为热门的研究课题.现代电子技术和计算机技术的迅速发展促进了片上系统和混合集成电路的大量涌现,这也对模拟电路的测试和故障诊断提出了更高的要 ...

  10. JAVA梅森旋转随机算法,C语言实现梅森旋转算法

    原理: 梅森旋转算法是一种伪随机数生成算法 1.定义相关宏和结构体 #include #include #include #include typedef unsigned int uint; #de ...

最新文章

  1. 扎克伯格凌晨放大招,说几句话能造世界的那种
  2. Discuz!NT 在线用户功能简介
  3. WIN10 常用bug解决办法
  4. Docker / 深入理解的容器和镜像
  5. linux内核定时唤醒,Linux内核时钟与定时器的实现
  6. 某人想在h小时内钓到_为某人命名以重新连接到您的服务器
  7. Android学习之在Eclipse看源代码的技巧
  8. day 45 SQLAlchemy,和增删查改
  9. CN笔记:第一章 计算机网络概述
  10. A. Holidays
  11. Java生成bmp图片_利用24位BMP图实现信息隐写(java语言)
  12. 应用于手机触摸屏中的电容式触摸芯片
  13. Blender mmd 导出FBX模型 和 烘焙动画
  14. 再探Direct3D流水线
  15. 算法定义及其主要特征
  16. 将base64加密之后的图片文件流写为文件
  17. HDU 1024 Max Sum Plus Plus
  18. 关于RSA算法的探究 -Crypto 0x01
  19. Mindjet MindManager 2019使用教程:
  20. 遭遇使用映像劫持/IFEO 的 Worm.Win32.Avkiller.i/gavuusg.exe

热门文章

  1. jmeter连接mysql并定义变量提供给后续接口使用
  2. idea主题风格设置
  3. mac上超好用的文字转语音工具【迅捷文字转语音】
  4. 在termux中利用安卓的vulkan库加速NCNN
  5. 腾讯云安装宝塔面板详细教程
  6. 什么是弱网测试?为什么要进行弱网测试?怎么进行弱网测试?
  7. python教程 马哥_马哥python从入门到精通,资源教程下载
  8. python第三方库安装路径
  9. ISSCC 2017论文导读 Session 14: A 28nm SoC with a 1.2GHz Prediction Sparse Deep-Neural-Network Engine
  10. 为贝尔吉比特电信G-120W-B光猫添加自动重启功能