Ka的分治|归并排序,注释详尽
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的分治|归并排序,注释详尽相关推荐
- 算法分析-分治 归并排序,递归插入排序,二分查找
反正分治的套路就是 相同子问题,递归做,我之前有介绍express源码,其中的中间件使用就是用next()函数一直递归,想看的看我的express源码分析: 分治3步骤: 分解 处理 归并 下面给出归 ...
- 算法设计与分析——递归与分治——归并排序
归并排序采用的是一种分治的思想,如下图,先将要排序的元素分为两块,每个块又开始分裂,然后逐个按照特定顺序合并,合成最后我们需要的数组. 归并排序的复杂度: 时间复杂度:O(nlogn) 空间复杂度:O ...
- 图像恢复 SWinIR : 彻底理解论文和源代码 (注释详尽)
文章目录 1. SwinIR 论文 2. SWinIR 网络结构 2.1 整体框架 2.2 浅层特征提取 2.3 深层特征提取 2.4 图像重建模块 3. 主要代码理解 3.1 SwinIR 3.2 ...
- 分治——归并排序c语言
概念: 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治 ...
- 两数相加—C语言逐位相加版(注释详尽)
本题为leetcode上的一道中等难度题,源代码由一名叫做秀艺的用户所写,相比我自己的版本简洁很多,应用了很多小技巧,值得借鉴学习,在整理过程中为了更好的理清思路,为每一行代码进行了注释(这样做效果也 ...
- 无重复字符最长字串的滑动窗口结合哈希表解法(注释详尽)
这个解法是由leetcode上的jack这名用户上传,巧妙的使用了哈希表来缩短执行时间,非常值得学习,但是原作者并没有将原理和亮点讲的很清楚,所以我重新将它梳理了一遍发了出来. 思路: 这个解法是以常 ...
- 京东抢购失败?试试用 python 准时自动抢购 (注释详尽)
文章目录 1. 问题分析 2. 基础情况 3. 安装 selenium 4. 下载 Edge 浏览器驱动 5. 登录网页京东 6. 滑动验证登录 7. 自动购买商品 8. 完整实现源码 结 语 参考博 ...
- 仿蚂蚁金服AntV框架蚂蚁数据可视化F2 基金折线图、对比图(包含买卖点、自定义标签等,注释详尽)
大家好,这次使用的是AntV的蚂蚁数据可视化F2框架,类似于蚂蚁基金的效果,包含买卖点.自定义标签等,代码如下: F2框架参考网址:https://antv-f2.gitee.io/zh/exampl ...
- 仿蚂蚁金服AntV框架蚂蚁数据可视化F2条形图、柱状图(注释详尽)
大家好,这次使用的是AntV的蚂蚁数据可视化F2框架,类似于蚂蚁基金的效果,代码如下: F2框架参考网址:https://antv-f2.gitee.io/zh/examples/bar/basic# ...
最新文章
- 浅议NetMQ常见模式和消息加密机制
- 细数判断数据类型的各种方法
- oracle查效能,Oracle 11g物理Active Data Guard实时查询(Real-time query)特性
- python grpc 并发_python中grpc的使用示例
- 利用XP组策略加强机密数据安全
- Inpaint for Mac(图片去水印软件)
- CentOS7忘记root密码的解决方法
- 蒙特卡洛方法到底有什么用(两个案例说明)
- 《麦肯锡方法》第9章 头脑风暴-思维导图
- linux find查找文件后缀名,CentOS 7 find命令及文件名后缀的介绍
- 学生信息管理系统python面向对象_Python学员管理系统【面向对象实现】
- 春节攻防战即将打响,想要弯道超车的商家们,准备好了吗?
- 函数式编程扫盲 - 转载系列1
- UFC/k1 VS中国散打!!!!!!!
- 少儿机器人教育现状与未来
- 音视频学习(十三、音频数据处理)
- 漫画本地化母语翻译、审校、嵌字排版 安睿杰翻译
- Explaindio Video Creator Platinum(简称EVC) 3.042 Windows中文白金版MG动画2D和3D动画解说动画手绘白板动画视频制作软件
- 怎么让html滚动字幕居中,CSS设置DIV窗口上下居中无滚动条
- 视频压缩编码及视频文件格式
热门文章
- 直播系统源码的基础功能有哪些?
- 谷歌账户二次验证_为您的Google帐户和Microsoft帐户设置双重身份验证
- 一个人能够哲学思考的条件
- 火车头按照关键词采集文章的平台有哪些?亲测实录!
- 【深度学习】1-权重参数全相同值初始化,导致无法训练-python
- flppy bri_BRI的完整形式是什么?
- 句子批量给单词加注释加音标并标红
- 解决myeclipse导入maven工程时问题:No marketplace entries found to handle maven-compiler-plugin:2.3.2
- POJ1830 开关问题
- Android热更新十:自己写一个Android热修复