//归并排序算法
void merger(int arr[], int TempArr[], int left, int mid, int right){//标记左半部分第一个元素int l_pos = left;//标记右半部分第一个元素int r_pos = mid + 1;//临时数组下标int Pos = left;while(l_pos <= mid && r_pos <= right){if(arr[l_pos] < arr[r_pos]){          //左半区第一个元素更小TempArr[Pos++] = arr[l_pos++];}elseTempArr[Pos++] = arr[r_pos++];    //右半区第一个元素更小}//左半部分剩余的元素while (l_pos <= mid)TempArr[Pos++] = arr[l_pos++];//右半部分剩余的元素while (r_pos <= right)TempArr[Pos++] = arr[r_pos++];//把临时数组拷贝给原数组while(left <= right){arr[left] = TempArr[left];left++;}
}void Msort(int arr[], int TempArr[], int left, int right){//如果只有一个元素时那么就不需要划分if(left < right){//中间点int mid = (left + right) / 2;    //递归划分左半区域Msort(arr, TempArr, left, mid);//递归划分有半区域Msort(arr, TempArr, mid + 1, right);//合并merger(arr, TempArr, left, mid, right);}
}//归并入口
void Meger_Sort(int arr[],int n)
{//临时数组int *TempArr = (int *)malloc(sizeof(int) * n);if (TempArr){   //分配成功Msort(arr,TempArr,1,n - 1);free(TempArr);}else{printf("Error!\n");}
}

归并排序算法代码实现相关推荐

  1. 排序算法:归并排序算法实现及分析

    归并排序算法介绍 归并排序(Merging Sort)就是利用归并的思想实现排序的放.它的原理是假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个 ...

  2. 归并排序 java 迭代_经典排序算法之归并排序(示例代码)

    归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,效率为 (大O符号).1945年由约翰·冯·诺伊曼首次提出.该算法是采用分治法(Divide an ...

  3. 归并排序算法原理和C++代码

    归并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法的一个非常典型的应用. 算法原理: 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列: 设定两个指针,最初位置分别 ...

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

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

  5. 堆排序和归并排序 java代码实现

    文章目录 堆排序 java代码实现 单元测试 归并排序 java代码实现 单元测试 堆排序 java代码实现 package csdn.dreamzuora.sort;import java.util ...

  6. python 归并排序算法_python基本算法之实现归并排序(Merge sort)

    0.前言 评判一个算法的好坏的标准: 时间复杂度 空间复杂度 1.归并排序算法是什么? 冒泡排序(Bubble Sort)是一种建立在归并操作上面的一种有效的排序算法,由John von neuman ...

  7. 有序序列的二分查找、冒泡排序、归并排序算法实战解析

    本节开始讲解一下几个简单的算法,原理都在那本书上,大家自己看吧,我就不做搬运工了,这里不同的是,我把vector接口函数单独拿出来进行测试了,深深的体会到算法的奥妙之处,等你深入理解了你会情不自禁拍案 ...

  8. C++ 不知算法系列之聊聊希尔、归并排序算法中的分治哲学

    1. 前言 排序算法中,冒泡.插入.选择属于相类似的排序算法,这类算法的共同点:通过不停地比较,再使用交换逻辑重新确定数据的位置. 希尔.归并.快速排序算法也可归为同一类,它们的共同点都是建立在分治思 ...

  9. 排序算法系列:归并排序算法

    概述 上一篇我们说了一个非常简单的排序算法--选择排序.其复杂程序完全是冒泡级的,甚至比冒泡还要简单.今天要说的是一个相对比较复杂的排序算法--归并排序.复杂的原因不仅在于归并排序分成了两个部分进行解 ...

最新文章

  1. RelativeLayout不能居中的解决的方法
  2. PHP获取IP地址以及IP地址所在位置
  3. 2 Python 介绍
  4. 《随机过程》布朗运动理论中的两个反常问题
  5. 大数据的数据采集数据处理_让我们处理大数据
  6. linux操作系统2试题,RedHat Linux 9.0 操作系统测试题2
  7. C++11 标准新特性:委派构造函数
  8. cocos2d-x Schedule详解
  9. cmd 顺序启动服务_未能连接一个Windows服务 怎么回事
  10. Python程序中的进程操作-进程同步(multiprocess.Lock)
  11. 哈工大计算机报深圳还是本部,哈工大本部和哈工大深圳哪个比较好?
  12. c语言写莫迪康通信,常用PLC通信协议有哪些?
  13. qt实现拓扑图_基于QT的PLC梯形图编辑系统设计与实现
  14. 【手绘】海贼王女帝汉库克 - 附完整手绘教程
  15. python爬虫基础及实例---代码经过实测
  16. matlab 导出图片坐标_Matlab绘图---坐标系显示设置
  17. 小巧 mvc servlet 通过反射 跳转 bussiness层
  18. 王慧文的光年之外离OpenAI还有多远?
  19. 数学建模之spss软件使用和例题
  20. 利用ffmpeg 把.mp4转换为.flv

热门文章

  1. 51单片机的堆栈指针(SP)
  2. html设计壁纸的软件,60个网页及平面设计师必备神器
  3. Manjaro 美化与调优
  4. MDT CustomSettings.ini Tips Tricks
  5. 抢先报名 | gTech 职业大揭秘,17 日 19:30 等你来
  6. jenkins构建android并发布到蒲公英平台
  7. 浙江移动2018暑期实习生经历
  8. 免费的期刊论文文献检索网站(收集整理)
  9. 南宁城市建设发展市政工程人才需求暴涨
  10. 3.1 腾讯云AI能力矩阵