
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
快速排序是实际应用中使用最广泛的排序算法。它的优点:快速排序和归并排序都用了"分而治之"的思想,但方向相反:用 ASCII 图示:三、核心:分区(Partition)操作分区是快速排序的灵魂。目标是选一个"基准元素",把数组重新排列成:分区过程图解分区的 C++ 实现四、完整快速排序(C++ 完整可运行代码)五、递归调用树(以 QUICKSORTEXAMPLE 为例)#mermaid-svg-qG
程序运行时间分析的流程:1. 找出所有语句块,分析执行次数↓2. 用波浪线近似,只保留最高次项↓3. 确定增长阶数(忽略系数)~N^3/6 → 增长阶数 N^3↓4. 定义成本模型,把算法和实现分开数组访问次数 ~N^3/2 → 命题 B↓5. 用双倍测试实验验证时间比值 → 8 → 印证 N^3核心结论:ThreeSum 暴力算法的运行时间满足TN∼a⋅N3TN∼a⋅N3,其中aaa是与机器相关
抽象数据类型(Abstract Data Type,简称 ADT)就是一种"只对外暴露操作,隐藏内部实现"的数据类型。你用手机打电话,你只需要知道"拨号、接听、挂断"这几个操作,完全不需要知道手机内部的电路是怎么工作的。手机就是一个 ADT:操作公开,实现隐藏。在 C++ 中,我们用 class来实现 ADT,把数据成员放在private区域(隐藏),把操作放在public区域(对外开放)。封装是
这是 Bjarne Stroustrup(C++ 之父)的一场演讲摘要,提出了一个深刻的问题:Stroustrup 给出的答案是,C++ 的某些关键特性同时满足了三个条件:C++成功 ⟺ {1. 服务于广泛的需求(widespread needs)2. 普通开发者可以掌握(manageable by ordinary developers)3. 数十年保持稳定(stable over deca
在超大规模 C++ 项目中,“构建”本身已经成为核心生产力瓶颈之一。C++ 是编译型语言 + 重度模板 + 头文件文本替换机制,其编译过程包括:例如:构建失败成本:现代 DevOps 需要:直接收益:C++ 采用文本包含机制:若 1000 个 cpp 文件包含 A.h,则这些 STL 头会被重复解析 1000 次。CompileTime∝∑i=1nHeaderSizei×IncludeCounti
两个等长向量,对应元素相乘再求和,结果是一个标量(单个数字)。x⃗⋅y⃗∑i0n−1xi⋅yix⋅yi0∑n−1xi⋅yiAAA是m×nm \times nm×n矩阵,BBB是n×pn \times pn×p矩阵,结果CCC是m×pm \times pm×p矩阵。
做 N 次独立试验,每次成功概率为 p,恰好成功 k 次的概率每次试验只有两种走向:成功 (概率 p) -> 还需要成功次数 -1失败 (概率 1-p) -> 还需要成功次数不变这两条路的概率之和就是当前状态的概率。原始递归:把这棵树全部展开,重复计算指数级节点记忆化: 展开时查表,每个 (N,k) 只算一次动态规划:从最小的 (0,0) 出发,按行填满,自然不重复数组 a = { 1, 2, 2
你不会从第1页翻到最后,而是先翻到中间如果中间的字母比 ‘o’ 小,就去右半部分找如果中间的字母比 ‘o’ 大,就去左半部分找重复,直到找到为止这就是二分查找!前提:数组必须已排序。StdDraw 绘图体系├── 画布坐标系:默认 [0,1] × [0,1],可用 setXscale/setYscale 扩展├── 基本图元:点、线、圆、矩形、多边形、文字├── 填充图元:filledCircle
https://godbolt.org/z/ah3W89eh5https://godbolt.org/z/cqfb799GT优势:无虚函数表,无堆分配编译期检查类型接口,保证安全性编译器可直接内联 ,CPU 指令开销极低泛型设计模式与性能关键场景C++20 Concepts 让 模板接口更可读可以在 性能关键路径 替代传统面向对象的虚函数多态适用场景:游戏引擎、图形渲染高性能数值计算实时系统数学公
2⃣ 嵌入式/底层软件世界(Embedded/Systems Software)核心概念C / C++ Programming:底层系统开发首选语言。EMU / Yocto / Linux:EMU:模拟器,用于测试嵌入式系统。Yocto Project:构建定制 Linux 系统的工具链。Linux:嵌入式设备常用操作系统。PROJECT / REPNEI:可能指嵌入式软件工程项目管理或某些特定嵌







