一、什么是归并排序?

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

二、归并操作的工作原理如下:
第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置
第三步:比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
重复步骤3直到某一指针超出序列尾
将另一序列剩下的所有元素直接复制到合并序列尾

三、C语言程序代码
#include<stdio.h>
int guibing(int *p,int *q,int left,int mid,int right);
int main(void)
{
int i;
int d[]={0};
int p[10]={2,4,6,8,0,1,3,5,7,9};
guibing(p,d,0,3,9);
for(i=0;i<10;i++)
{
printf("%d,",d[i]);
}
return 0; 

//将两个排好序的序列归并到一个数组里 
int guibing(int *p,int *q,int left,int mid,int right)//mid是第一个数组的最后一个下表 ,q是归并排列好的数组 
{
int i,j,k;
i=left;
j=mid+1;
k=left;//k是排好序的第一个元素的下表
while(i<=mid&&j<=right)
{
if(p[i]<p[j])
{
q[k]=p[i];
k++;
i++; 
}
else
{
q[k]=p[j];
k++;
j++;
}
if(i>mid)
while(j<=right)
q[k++]=p[j++];
else if(i<=mid)
while(j>right)
q[k++]=p[i++];

}

转载于:https://blog.51cto.com/xxr007/1833476

C语言之归并排序算法相关推荐

  1. c语言归并排序代码详细注释,C语言实现归并排序算法

    C语言实现归并排序算法 归并排序是创建在归并操作上的一种有效的排序算法.下面小编为大家整理了C语言实现归并排序算法,希望能帮到大家! 归并排序(Merge sort)是创建在归并操作上的一种有效的排序 ...

  2. 归并排序算法怎么优化?本文给你讲清楚

    排序算法是一种能将一系列数据按照特定顺序进行排列的算法,比如说一个学校的考试分数从高到低排名.一个公司的数据报表从大到小排列,都需要用到排序算法.常见的排序算法有冒泡排序.快速排序.字典排序.归并排序 ...

  3. C语言merge sort归并排序算法(附完整源码)

    C语言merge sort归并排序算法 merge sort归并排序算法的完整源码(定义,实现) merge sort归并排序算法的完整源码(定义,实现) #ifndef MERGE_SORT_H # ...

  4. 【经典回放】多种语言系列数据结构算法:归并排序

    目录 干货1:C#语言实现归并排序! 干货2:C语言实现归并排序! 干货1:C#语言实现归并排序! 一.算法 1.思想基础

  5. aes算法实现c语言_以C语言实现归并排序为例,谈谈五大常用算法之一的“分治法”...

    分治算法,顾名思义就是"分而治之",即把规模较大的复杂问题拆分为若干规模较小的类似子问题,并逐个解决,最后再将各个子问题的解决结果合并,得到原始问题的结果的方法.这个技巧是很多高效 ...

  6. 归并排序算法(C语言版本)

    基本思想 归并排序(Merge Sort)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分成一些小的问题然后进行递归求解,而治的阶段则将 ...

  7. c语言归并排序代码详细注释,C语言实现排序算法之归并排序详解

    排序算法中的归并排序(Merge Sort)是利用"归并"技术来进行排序.归并是指将若干个已排序的子文件合并成一个有序的文件. 一.实现原理: 1.算法基本思路 设两个有序的子文件 ...

  8. 2路归并排序算法(C语言)

    转载自:http://blog.csdn.net/caryaliu/article/details/7475700 将两个按值有序序列合并成一个按值有序序列,则称之为二路归并排序,下面有自底向上和自顶 ...

  9. 归并排序算法详解(方法一)之C语言版

    一.算法原理 归并排序是一种常用的排序算法,属于稳定排序法,其时间复杂度为 归并排序就是将两个已经分别排好序的数组A和B合并为一个排好序的数组C. 如果数组散乱的数组,则需要将数组元素分别按照长度为d ...

最新文章

  1. 【数学建模】MATLAB从入门到精通:Logistic模型原理及应用案例(附MATLAB代码)
  2. 1231 最优布线问题
  3. UVA - 11882Biggest Number dfs+期望剪枝
  4. Dockerd docker-containerd docker-containerd-shim runC
  5. ios sqlite3 初级应用
  6. pandas如何通过函数修改某一列的值?
  7. java多线程通信_Java多线程-线程通信
  8. 杀破狼java_终于把《杀破狼》看完了
  9. `ECS弹性计算服务
  10. lammps教程:group命令详解
  11. MySQL之MHA集群的详细教程
  12. 天龙八部3新扫地僧辅助 全功能专业刷马贼脚本功能介绍
  13. 第二章 python自定义函数与类(一)
  14. 入门物联网需要服务器
  15. 矩阵乘法计算量估算/华为机试(C/C++)
  16. 我的python中级班学习之路(全程笔记第一模块) (第二章)(第3部分:元祖、哈希(hash)、字典、集合...
  17. hibernate工作机制
  18. EUV 光刻机到底有多重要?
  19. Lettuce: Connection to x.x.x.x not allowed. This connection point is not known in the cluster view
  20. JAVA实现简单数据采集

热门文章

  1. feign返回null_109、Feign的服务降级和Turbine
  2. python抓取数据库数据封装成json_用Python将mysql数据导出成json的方法
  3. c++读取.dat文件_MySQL 数据文件类型
  4. html5场景编辑工具,3款容易上手的HTML5编辑工具推荐~
  5. linux下crontab allow,Linux下crontab命令的用法
  6. python雷达图详解_python的matplotlib---雷达图
  7. 子程序与中断程序的异同_专业解读PLC编程中断的原理和用法
  8. 图像“位操作”有什么用?
  9. 【视频课】模型部署课程更新!ncnn框架快速实践!
  10. 【通知】有三AI固态硬盘最后一次补货,再增3套视频!