1 #include <stdio.h>
 2 int GBsort(int *A,int x,int y,int *B)
 3 //A是待排列的数组,数组为[x,y),B是备份数组
 4 {
 5     if(y-x>1) //考虑数组不是单独一个元素的情况
 6     {
 7         int h=x+(y-x)/2;//h=中间点 赋值等价于(x+y)/2
 8         int lm=x,rm=h;//rm=右边待排序标号 lm=左边待排序标号 应用见18行
 9         int i=x;//i=备份数组标号,应用见25行
10
11         //接下来先将中间点两旁的数组分别排序好
12         //使用递归
13         GBsort(A,x,h,B);
14         GBsort(A,h,y,B);
15
16         //现在比较两部分的最小数
17         //小的放入备份数组,大的继续等待比较
18         while(lm<h||rm<y)//当待排序标号都在自己的范围内时
19         {
20             //右边的数已用完则直接把左边的数放入B中
21             //如果右边没用完,看看左边的数是否没用完而且小于右边的数
22             //再把左边的数放入B
23             if(rm>=y||(lm<h&&A[lm]<=A[rm]))//
24                 B[i++]=A[lm++];//放数后顺便移位
25             else B[i++]=A[rm++]; //此外的情况就自然是右边小于左边了
26         }
27         //到这里,处理就结束了,两个部分结合成一个有序的部分
28         //但是数据还在备份数组,所以要把备份数组的数据放回原数组
29         for(i=x;i<y;i++)
30             A[i]=B[i];
31     }
32     //只有一个元素时必然是有序的,不用再排序了
33 }
34 int main()
35 {
36     int t[100],a[100],i,n;
37     scanf("%d",&n);
38     for(i=0;i<n;i++)
39         scanf("%d",&a[i]);
40     GBsort(a,0,n,t);
41     for(i=0;i<n;i++)
42         printf("%d ",a[i]);
43     return 0;
44 }

转载于:https://www.cnblogs.com/KakagouLT/p/4702716.html

Ka的分治|归并排序,注释详尽相关推荐

  1. 算法分析-分治 归并排序,递归插入排序,二分查找

    反正分治的套路就是 相同子问题,递归做,我之前有介绍express源码,其中的中间件使用就是用next()函数一直递归,想看的看我的express源码分析: 分治3步骤: 分解 处理 归并 下面给出归 ...

  2. 算法设计与分析——递归与分治——归并排序

    归并排序采用的是一种分治的思想,如下图,先将要排序的元素分为两块,每个块又开始分裂,然后逐个按照特定顺序合并,合成最后我们需要的数组. 归并排序的复杂度: 时间复杂度:O(nlogn) 空间复杂度:O ...

  3. 图像恢复 SWinIR : 彻底理解论文和源代码 (注释详尽)

    文章目录 1. SwinIR 论文 2. SWinIR 网络结构 2.1 整体框架 2.2 浅层特征提取 2.3 深层特征提取 2.4 图像重建模块 3. 主要代码理解 3.1 SwinIR 3.2 ...

  4. 分治——归并排序c语言

    概念: 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治 ...

  5. 两数相加—C语言逐位相加版(注释详尽)

    本题为leetcode上的一道中等难度题,源代码由一名叫做秀艺的用户所写,相比我自己的版本简洁很多,应用了很多小技巧,值得借鉴学习,在整理过程中为了更好的理清思路,为每一行代码进行了注释(这样做效果也 ...

  6. 无重复字符最长字串的滑动窗口结合哈希表解法(注释详尽)

    这个解法是由leetcode上的jack这名用户上传,巧妙的使用了哈希表来缩短执行时间,非常值得学习,但是原作者并没有将原理和亮点讲的很清楚,所以我重新将它梳理了一遍发了出来. 思路: 这个解法是以常 ...

  7. 京东抢购失败?试试用 python 准时自动抢购 (注释详尽)

    文章目录 1. 问题分析 2. 基础情况 3. 安装 selenium 4. 下载 Edge 浏览器驱动 5. 登录网页京东 6. 滑动验证登录 7. 自动购买商品 8. 完整实现源码 结 语 参考博 ...

  8. 仿蚂蚁金服AntV框架蚂蚁数据可视化F2 基金折线图、对比图(包含买卖点、自定义标签等,注释详尽)

    大家好,这次使用的是AntV的蚂蚁数据可视化F2框架,类似于蚂蚁基金的效果,包含买卖点.自定义标签等,代码如下: F2框架参考网址:https://antv-f2.gitee.io/zh/exampl ...

  9. 仿蚂蚁金服AntV框架蚂蚁数据可视化F2条形图、柱状图(注释详尽)

    大家好,这次使用的是AntV的蚂蚁数据可视化F2框架,类似于蚂蚁基金的效果,代码如下: F2框架参考网址:https://antv-f2.gitee.io/zh/examples/bar/basic# ...

最新文章

  1. 浅议NetMQ常见模式和消息加密机制
  2. 细数判断数据类型的各种方法
  3. oracle查效能,Oracle 11g物理Active Data Guard实时查询(Real-time query)特性
  4. python grpc 并发_python中grpc的使用示例
  5. 利用XP组策略加强机密数据安全
  6. Inpaint for Mac(图片去水印软件)
  7. CentOS7忘记root密码的解决方法
  8. 蒙特卡洛方法到底有什么用(两个案例说明)
  9. 《麦肯锡方法》第9章 头脑风暴-思维导图
  10. linux find查找文件后缀名,CentOS 7 find命令及文件名后缀的介绍
  11. 学生信息管理系统python面向对象_Python学员管理系统【面向对象实现】
  12. 春节攻防战即将打响,想要弯道超车的商家们,准备好了吗?
  13. 函数式编程扫盲 - 转载系列1
  14. UFC/k1 VS中国散打!!!!!!!
  15. 少儿机器人教育现状与未来
  16. 音视频学习(十三、音频数据处理)
  17. 漫画本地化母语翻译、审校、嵌字排版 安睿杰翻译
  18. Explaindio Video Creator Platinum(简称EVC) 3.042 Windows中文白金版MG动画2D和3D动画解说动画手绘白板动画视频制作软件
  19. 怎么让html滚动字幕居中,CSS设置DIV窗口上下居中无滚动条
  20. 视频压缩编码及视频文件格式

热门文章

  1. 直播系统源码的基础功能有哪些?
  2. 谷歌账户二次验证_为您的Google帐户和Microsoft帐户设置双重身份验证
  3. 一个人能够哲学思考的条件
  4. 火车头按照关键词采集文章的平台有哪些?亲测实录!
  5. 【深度学习】1-权重参数全相同值初始化,导致无法训练-python
  6. flppy bri_BRI的完整形式是什么?
  7. 句子批量给单词加注释加音标并标红
  8. 解决myeclipse导入maven工程时问题:No marketplace entries found to handle maven-compiler-plugin:2.3.2
  9. POJ1830 开关问题
  10. Android热更新十:自己写一个Android热修复