原理:使用递归方法来实现归并排序时,主要是两个“有序子序列”的合并
(1)将待排序序列从中间一分为二,对左右两边再进行递归分割操作,使用递归,得到n个相互独立的子序列(过程像二叉树那样);
(2)对n个独立的子序列递归的执行合并操作,最终得到有序的序列。

( 80,30,60,40,20,10,50,70)

(80,30,60,40)                                                                  (20,10,50,70)

(80,30)          (60,40)                                                     ( 20,10)                   (50,70)

( 80)         (30)         (60)       (40)                           (20)           (10)                (50)     (70)(第一步)

(30,80)                (40,60)                                                         (10,20)                  (50,70)

(30,40,60,80)                                                                    (10,20,50,70)

(10,20,30,40,50,60,70,80)    (第二步)

最后归并的时候方法

#include<stdio.h>
#include<stdlib.h>
void fun(int a[],int l,int avg,int rend){int *tmp=(int *)malloc(sizeof(int));//开辟空间 int i=l;//l是左边数组下标 int j=avg+1;//avg是中间的数加1是右边数组下标 int k=0;while(i<=avg&&j<=rend){ //左右两边进行比较把小的存放到tmp数组 if(a[i]<=a[j])tmp[k++]=a[i++];elsetmp[k++]=a[j++];}//左右两边进行比较把较小的数赋值给tmp数组里面 while(i<=avg)//把左边剩余的数组元素传入tmp数组 tmp[k++]=a[i++];while(j<=rend)//把右边剩余的数组元素传入tmp数组 tmp[k++]=a[j++];for(i=0;i<k;i++)//把新数组中的数覆盖到a数组中 a[l+i]=tmp[i];   }
void fun1(int a[],int l,int rend){if(a==NULL||l>=rend)return;int avg=(l+rend)/2;fun1(a,l,avg);//左边数组排序 fun1(a,avg+1,rend);//右边数组排序 fun(a,l,avg,rend);//合并左右数组
}
int lenght(int a[]){//读取数组长度 int count;while(a[count]!='\0'){count++;}return count;
}
int main(){int i;int a[]={80,30,60,40,20,10,50,70};int ilen=lenght(a);printf("before sort:");for(i=0;i<ilen;i++)printf("%d  ",a[i]);printf("\n");fun1(a,0,ilen-1);printf("after sort:");for(i=0;i<ilen;i++)printf("%d  ",a[i]);printf("\n");return 0;
} 

fun1递归的得到是n个子序列

fun在对有序子序列进行归并

输入进行归并算法,将主函数调换即可

 int main(){int a[999],n,i;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);fun1(a,0,n-1);for(i=0;i<n;i++)printf("%d ",a[i]);return 0;}

归并算法(详细见解)相关推荐

  1. 十大经典排序算法详细总结 图形展示 代码示例

    文章目录 十大经典排序算法详细总结 0.排序算法说明 1.冒泡排序(Bubble Sort) 2.选择排序(Selection Sort) 3.插入排序(Insertion Sort) 4.希尔排序( ...

  2. Yolov1目标检测算法详细分析

    Yolov1目标检测算法详细分析 Yolov1介绍 这是继RCNN,fast-RCNN 和 faster-RCNN之后,rbg(Ross Girshick)大神挂名的又一大作,起了一个很娱乐化的名字: ...

  3. 【转】卡尔曼滤波算法详细推导(相当值得一看)

    转载自   卡尔曼滤波算法详细推导     这一篇对预备知识的介绍还是很好的,过程与原理讲解也很到位,应该是目前看到中文里最好的讲解了. 一.预备知识 1.协方差矩阵     是一个维列向量,是的期望 ...

  4. 红黑树(一)之 原理和算法详细介绍---转帖

    目录 1 红黑树的介绍 2 红黑树的应用 3 红黑树的时间复杂度和相关证明 4 红黑树的基本操作(一) 左旋和右旋 5 红黑树的基本操作(二) 添加 6 红黑树的基本操作(三) 删除 作者:Sky W ...

  5. 红黑树(一)之 原理和算法详细介绍

    出处:http://www.cnblogs.com/skywang12345/p/3245399.html 概要 目录 1 红黑树的介绍 2 红黑树的应用 3 红黑树的时间复杂度和相关证明 4 红黑树 ...

  6. 基于Fork/Join框架实现对大型浮点数数组排序(归并算法和插入排序算法)

    分支/合并框架 说明 重点是那个浮点数数组排序的例子,从主函数展开,根据序号看 1.GitHub代码欢迎star.你们轻轻的一点,对我鼓励特大,我有一个习惯,看完别人的文章是会点赞的. 2.个人认为学 ...

  7. python分割数字_对python数据切割归并算法的实例讲解

    当一个 .txt 文件的数据过于庞大,此时想要对数据进行排序就需要先将数据进行切割,然后通过归并排序,最终实现对整体数据的排序.要实现这个过程我们需要进行以下几步:获取总数据行数:根据行数按照自己的需 ...

  8. Madgwick算法详细解读

    Madgwick算法详细解读 极品巧克力 前言 接上一篇文章<Google Cardboard的九轴融合算法>. Madgwick算法是另外一种九轴融合的方法,广泛应用在旋翼飞行器上,效果 ...

  9. 由归并算法引申出来的其他问题

    前言: 上一节刚讲过归并算法是排序算法中比较少见的一种时间复杂度为:θ(nlgn)的算法.而归并算法之所以快的原因在于它用了分治的思想,现实生活中有很多需要用到分治思想解决的问题,下面就举两个例子. ...

  10. CRC32算法详细推导(3)

    From:http://blog.csdn.net/sparkliang/article/details/5671543 CRC32算法详细推导(3) 郁闷的位逆转 看起来我们已经得到 CRC-32  ...

最新文章

  1. HTML5表单的创建及与PHP的交互
  2. 百度api:根据经纬度获取地理位置信息
  3. 旋转动画用控件RotateView
  4. 面试题 异常的抛出和捕获
  5. 计算机初试占比高的学校,复试压力小,初试占比70%及以上的院校汇总!
  6. 【历史上的今天】8月19日:大型计算机先驱和小型机之父诞生;中国雅虎邮箱成历史...
  7. 为普通用户添加root权限
  8. 混淆Android JAR包的方法
  9. mysql导入数据库没创建表_mysqldump不会创建表或导入任何数据
  10. 题解 P3835 【【模板】可持久化平衡树】
  11. python使用redis做缓存_Python的Flask框架使用Redis做数据缓存的配置方法
  12. SQL语句:查询多表更新数据
  13. 软考论文-写作大纲-备考思路总结
  14. 期刊分类abcde_ABCD期刊分类目录
  15. 绘画软件:krita for Mac
  16. html thead作用,HTML thead 标签定义和用法详细介绍
  17. 自媒体人写稿必备的工具
  18. 校招 - 行业测评题、图形推理题、逻辑思维面试题,解题技巧汇总
  19. TAGS::Vim进阶索引[7]
  20. Java RGB转色温(CCT)

热门文章

  1. 宽度 深度学习 特点对比
  2. 灵活好用,GIF 屏幕录制工具
  3. 单片机的一些名词解释
  4. 临时邮箱email网址收集
  5. 数据库课程设计:图书借阅管理系统(控制台交互)
  6. php开发h5游戏教程,HTML5实现魔方游戏的代码
  7. Creator H5全平台游戏开发教程 PDF 下载(800+页)
  8. QT之二维码生成以及识别
  9. 大话MIMO-OFDM联合工作实现过程
  10. 助力公共事业服务,RPA大显身手