Hello 算法 1.0.0 Rust版res += i; } res } 第 2 章 复杂度分析 hello‑algo.com 20 图 2‑1 是该求和函数的流程框图。 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 } res.join("") } 图 2‑2 是该嵌套循环的流程框图。 第 2 章 复杂度分析 hello‑algo.com 22 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”“四次方 关系”,以此类推。 2 时间复杂度的推算方法更简便。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因 此在时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将 “计算操作运行时间统计”简化为“计算操作数量统计”,这样一来估算难度就大大降低了。 ‧ 时间复杂度也存在一定的局限性。例如,尽管算法 A 和 C 的时间复杂度相同,但实际运行时间差别很 大。同样,尽管算法 B 的时间复杂度比 C 高,但在输入数据大小0 码力 | 383 页 | 17.61 MB | 1 年前3
Hello 算法 1.1.0 Rust版res += i; } res } 图 2‑1 是该求和函数的流程框图。 第 2 章 复杂度分析 hello‑algo.com 20 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 } res.join("") } 图 2‑2 是该嵌套循环的流程框图。 第 2 章 复杂度分析 hello‑algo.com 22 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”“四次方 关系”,以此类推。 2 时间复杂度的推算方法更简便。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因 此在时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将 “计算操作运行时间统计”简化为“计算操作数量统计”,这样一来估算难度就大大降低了。 ‧ 时间复杂度也存在一定的局限性。例如,尽管算法 A 和 C 的时间复杂度相同,但实际运行时间差别很 大。同样,尽管算法 B 的时间复杂度比 C 高,但在输入数据大小0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版res += i; } res } 第 2 章 复杂度分析 www.hello‑algo.com 20 图 2‑1 是该求和函数的流程框图。 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 res.join("") } 图 2‑2 是该嵌套循环的流程框图。 第 2 章 复杂度分析 www.hello‑algo.com 22 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”“四次方 关系”,以此类推。 2 时间复杂度的推算方法更简便。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因 此在时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将 “计算操作运行时间统计”简化为“计算操作数量统计”,这样一来估算难度就大大降低了。 ‧ 时间复杂度也存在一定的局限性。例如,尽管算法 A 和 C 的时间复杂度相同,但实际运行时间差别很 大。同样,尽管算法 B 的时间复杂度比 C 高,但在输入数据大小0 码力 | 387 页 | 18.51 MB | 10 月前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 17.3. 使用任意数量的 futures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . main() { let a = [1, 2, 3, 4, 5]; } 当你想要在栈(stack)而不是在堆(heap)上为数据分配空间(第四章将讨论栈与堆的更多 内容),或者是想要确保总是有固定数量的元素时,数组非常有用。但是数组并不如 vector 类 型灵活。vector 类型是标准库提供的一个 允许 增长和缩小长度的类似数组的集合类型。当不 确定是应该使用数组还是 vector 的时候,那么很可能应该使用 "August", "September", "October", "November", "December"]; 可以像这样编写数组的类型:在方括号中包含每个元素的类型,后跟分号,再后跟数组元素的 数量。 let a: [i32; 5] = [1, 2, 3, 4, 5]; 这里,i32 是每个元素的类型。分号之后,数字 5 表明该数组包含五个元素。 你还可以通过在方括号中指定初始值加分号再0 码力 | 562 页 | 3.23 MB | 26 天前3
Comprehensive Rust(简体中文) 202412implementation. – 始终采用固定数量的参数。不支持默认参数。宏可用于支持可变函数。 – Always takes a single set of parameter types. These types can be generic, which will be covered later. 6.6 宏 宏在编译过程中会扩展为 Rust 代码,并且可以接受可变数量的参数。它们以! 结尾来进行区分。Rust }", b"abc"); println!("{:?}", &[97, 98, 99]); } • 原始字符串可在创建 &str 时禁用转义:r"\n" == "\\n"。可以在外层引号两侧添加相同数量 的#,以在字符串中嵌入双引号: fn main() { println!(r#"link"#); println!("数量的 trait。系统还会针对 C++ 代码生成相应的功能,例如, 如果您派生了 Hash,还会为相应的 C++ 类型生成 std::hash 实现。 37.2.6 共享枚举 mod ffi {0 码力 | 359 页 | 1.33 MB | 10 月前3
Rust 语言学习笔记具体是,因为这几个结构体之间没有了强引用(`Rc`),所以,当他们销毁的时候。 // 首先 gadget1 和 gadget2 被销毁。 // 然后因为 gadget_owner 的引用数量为 0,所以这个对象可以被销毁了。 // 循环引用问题也就避免了 } 6.6 类型系统中常见的 trait 本章讲解 Rust 类型系统中的几个常见 trait。有 Into, From *&v。这里面有两种情况: 1.把其它类型的指针(比如在库中定义的,Box, Rc, Arc, Cow 等),转 成内部标准形式 &v; 2.把多重 & (比如:&&&&&&&v),简化成 &v(通过插入足够数量 的 * 进行解引)。 简单了解一下即可。 第七章 多线程与线程通信 从结论上来说,rust 的编译器并不能防止所有的线程引起的问题,例如: use std::thread; 绿色 (green)线程,使用绿色线程的语言会在不同数量的 OS 线程的上下文中执行 它们。为此,绿色线程模式被称为 M:N 模型:M 个绿色线程对应 N 个 OS 线程,这里 M 和 N 不必相同。 在当前上下文中,运行时 代表二进制文件中包含的由语言自身提供的代码。 这些代码根据语言的不同可大可小,不过任何非汇编语言都会有一定数量的运 行时代码。为此,通常人们说一个语言 “没有运行时”,一般意味着 0 码力 | 117 页 | 2.24 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人深度适应客户的系统环境和算法需求 • 机器数量有限,通常小于 10 • 网络带宽不高(千兆、万兆以太网) • 需要支持各种不同类型的图计算算法 双重执行模式 • 单机和分布式两套计算系统,在不同的使用 环境中都能达到最佳性能 针对常用算法逐个设计优化方案 • 对于常用算法,跳过固定的编程模型,分 别设计最佳的计算方案 • 例如我们自研的 node2vec 采样算法比现 有技术快了 1 个数量级 海致图计算平台特点0 码力 | 38 页 | 24.68 MB | 1 年前3
Rust语言核心竞争力-庄晓立Rust语言的设计和实现十分重视运行时性能 • 尽力避免任何非必要的运行时开销 • ……仅当与内存安全产生冲突时才有所妥协 • Rust的性能跟C/C++在同一个数量级上 • 零运行时并非指绝对的零,而是尽可能的小 • ……仍然跟C/C++的运行时在同一个数量级上 内存安全 Memory Safety 系统编程+零运行时+内存安全 为什么强调内存安全? • 系统编程对内存安全的需求十分强烈 • 内存不安全的后果非常严重0 码力 | 51 页 | 1.09 MB | 1 年前3
Rust与算法 - 谢波抽象数据类型 什么是抽象数据类型? 为什么需要抽象数据类型? 时空复杂度 • 时间复杂度更被看重 • 时间和空间复杂度不是对立的,可以协同 时间和空间复杂度 复杂度计算 • 大O标记法(数量级近似) • 用 AI 来估计 算步骤、算存储 Rust 基本数据结构复杂度 线性数据结构 非线性数据结构 总体来看,时间复杂度没有超过 O(n) 的! Rust 实现数据结构 • 栈0 码力 | 28 页 | 3.52 MB | 1 年前3
王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI Desktop Server 的全平台实践经验Pod、Service 等同样极其简单。 kube-rs: Kubernetes Controller ⼀个典型的控制器(Controller) 即是⼀个反射器(reflector),连 同任意数量的观察者,在内部调谐 事件,通过⼀个调节器发送事件。 GitHub CI Runner 太慢? 基于 Github Actions 构建容器镜像及优化策略 • Dockerfile 多阶段构建0 码力 | 34 页 | 10.81 MB | 1 年前3
共 11 条
- 1
- 2













