Hello 算法 1.2.0 简体中文 Rust 版算法的时间效率往往不是固定的,而是与输入数据的分布有关。假设输入一个长度为 ? 的数组 nums ,其中 nums 由从 1 至 ? 的数字组成,每个数字只出现一次;但元素顺序是随机打乱的,任务目标是返回元素 1 的 索引。我们可以得出以下结论。 ‧ 当 nums = [?, ?, ..., 1] ,即当末尾元素是 1 时,需要完整遍历数组,达到最差时间复杂度 ?(?) 。 ‧ 当 nums = [1, ?, ? collect::>(); // 随机打乱数组元素 nums.shuffle(&mut thread_rng()); nums } /* 查找数组 nums 中数字 1 所在索引 */ fn find_one(nums: &[i32]) -> Option { 第 2 章 复杂度分析 www.hello‑algo.com 41 for i in 0..nums 杂度可以体现算法在随机输入数据下的 运行效率,用 Θ 记号来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数就是数组长度的一半 ?/2 ,平 均时间复杂度为 Θ(?/2) = Θ(?) 。 但对于较为复杂的算法,计算平均时间复杂度往往比较困难,因为很难分析出在数据分布下的整体数学期望。 0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.1.0 Rust版算法的时间效率往往不是固定的,而是与输入数据的分布有关。假设输入一个长度为 ? 的数组 nums ,其中 nums 由从 1 至 ? 的数字组成,每个数字只出现一次;但元素顺序是随机打乱的,任务目标是返回元素 1 的 索引。我们可以得出以下结论。 ‧ 当 nums = [?, ?, ..., 1] ,即当末尾元素是 1 时,需要完整遍历数组,达到最差时间复杂度 ?(?) 。 ‧ 当 nums = [1, ?, ? collect::>(); // 随机打乱数组元素 nums.shuffle(&mut thread_rng()); nums } /* 查找数组 nums 中数字 1 所在索引 */ fn find_one(nums: &[i32]) -> Option { 第 2 章 复杂度分析 hello‑algo.com 41 for i in 0..nums.len() 杂度可以体现算法在随机输入数据下的 运行效率,用 Θ 记号来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数就是数组长度的一半 ?/2 ,平 均时间复杂度为 Θ(?/2) = Θ(?) 。 但对于较为复杂的算法,计算平均时间复杂度往往比较困难,因为很难分析出在数据分布下的整体数学期望。 0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.0.0 Rust版算法的时间效率往往不是固定的,而是与输入数据的分布有关。假设输入一个长度为 ? 的数组 nums ,其中 nums 由从 1 至 ? 的数字组成,每个数字只出现一次;但元素顺序是随机打乱的,任务目标是返回元素 1 的 索引。我们可以得出以下结论。 ‧ 当 nums = [?, ?, ..., 1] ,即当末尾元素是 1 时,需要完整遍历数组,达到最差时间复杂度 ?(?) 。 ‧ 当 nums = [1, ?, ? collect::>(); // 随机打乱数组元素 nums.shuffle(&mut thread_rng()); nums } /* 查找数组 nums 中数字 1 所在索引 */ fn find_one(nums: &[i32]) -> Option { 第 2 章 复杂度分析 hello‑algo.com 41 for i in 0..nums.len() 复杂度可以体现算法在随机输入数据下的 运行效率,用 Θ 记号来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数就是数组长度的一半 ?/2 ,平 均时间复杂度为 Θ(?/2) = Θ(?) 。 但对于较为复杂的算法,计算平均时间复杂度往往比较困难,因为很难分析出在数据分布下的整体数学期望。 0 码力 | 383 页 | 17.61 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 Rust 版演算法的時間效率往往不是固定的,而是與輸入資料的分佈有關。假設輸入一個長度為 ? 的陣列 nums ,其 中 nums 由從 1 至 ? 的數字組成,每個數字只出現一次;但元素順序是隨機打亂的,任務目標是返回元素 1 的索引。我們可以得出以下結論。 ‧ 當 nums = [?, ?, ..., 1] ,即當末尾元素是 1 時,需要完整走訪陣列,達到最差時間複雜度 ?(?) 。 ‧ 當 nums = [1, ?, ? collect::>(); // 隨機打亂陣列元素 nums.shuffle(&mut thread_rng()); nums } /* 查詢陣列 nums 中數字 1 所在索引 */ fn find_one(nums: &[i32]) -> Option { 第 2 章 複雜度分析 www.hello‑algo.com 41 for i in 0..nums 可以體現演算法在隨機輸入資料 下的執行效率,用 Θ 記號來表示。 對於部分演算法,我們可以簡單地推算出隨機資料分佈下的平均情況。比如上述示例,由於輸入陣列是被打 亂的,因此元素 1 出現在任意索引的機率都是相等的,那麼演算法的平均迴圈次數就是陣列長度的一半 ?/2 ,平均時間複雜度為 Θ(?/2) = Θ(?) 。 但對於較為複雜的演算法,計算平均時間複雜度往往比較困難,因為很難分析出在資料分佈下的整體數學期 0 码力 | 388 页 | 18.82 MB | 10 月前3
Rust 程序设计语言简体中文版团队希望使系统概念能为更多人所易于理解,特别是编程新手。 公司 数百家大小规模的公司在生产环境中使用 Rust 完成各种任务,包括命令行工具、Web 服务、 DevOps 工具、嵌入式设备、音视频分析与转码、加密货币、生物信息学、搜索引擎、物联网 (IOT)程序、机器学习,甚至是 Firefox 浏览器的重要部分。 7/600 Rust 程序设计语言 简体中文版 开源开发者 Rust 适合那些希望构建 Rust 编程语言、社 (单字节字符)(仅限于 u8 ) b'A' 那么该使用哪种类型的数字呢?如果拿不定主意,Rust 的默认类型通常是个不错的起点,数 字类型默认是 i32 。isize 或 usize 主要作为某些集合的索引。 48/600 Rust 程序设计语言 简体中文版 整型溢出 比方说有一个 u8 ,它可以存放从零到 255 的值。那么当你将其修改为 256 时会发 生什么呢?这被称为 “整型溢出”(“integer 三个不同的变量,x 、y 和 z 。这叫做 解构(destructuring),因为它将一个元组拆成了三个 部分。最后,程序打印出了 y 的值,也就是 6.4 。 我们也可以使用点号(. )后跟值的索引来直接访问它们。例如: 文件名:src/main.rs fn main() { let x: (i32, f64, u8) = (500, 6.4, 1); let five_hundred0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0团队希望使系统概念能为更多人所易于理解,特别是编程新手。 公司 数百家大小规模的公司在生产环境中使用 Rust 完成各种任务,包括命令行工具、Web 服务、 DevOps 工具、嵌入式设备、音视频分析与转码、加密货币、生物信息学、搜索引擎、物联网 (IOT)程序、机器学习,甚至是 Firefox 浏览器的重要部分。 开源开发者 Rust 适合那些希望构建 Rust 编程语言、社区、开发工具和库的开发者。我们非常欢迎你为 Rust Byte (单字节字符)(仅限于u8) b'A' 那么该使用哪种类型的数字呢?如果拿不定主意,Rust 的默认类型通常是个不错的起点,整 型默认是 i32。isize 或 usize 主要作为某些集合的索引。 整型溢出 比方说有一个 u8 ,它可以存放从零到 255 的值。那么当你将其修改为 256 时就会发 生 整型溢出(integer overflow ),这会导致以下两种行为之一的发生。当在 分成了三 个不同的变量,x、y 和 z。这叫做 解构(destructuring),因为它将一个元组拆成了三个部 分。最后,程序打印出了 y 的值,也就是 6.4。 我们也可以使用点号(.)后跟值的索引来直接访问所需的元组元素。例如: 文件名:src/main.rs fn main() { let x: (i32, f64, u8) = (500, 6.4, 1); let five_hundred0 码力 | 562 页 | 3.23 MB | 1 月前3
新一代分布式高性能图数据库的构建 - 沈游人2021 年 CCF 科 学技术奖科技进步卓越奖”。 伴随市场对于知识图谱应用的不断深入,图数据规模和应用性能之间的矛盾愈 加凸显,海致针对以上背景展开了系统性的技术攻关,解决了图数据的高效存 储、索引及复制难题,提出了基于图缩减的高效分析方法,并孵化出了一个大 规模图数据分析平台 AtlasGraph 。 5 获得 2022 年中国电子学会科学技术奖科技进步一等奖 中国电子学会发布的《 2022 Processing 架构,大规模集群 分布式存储及并行计 算, Shared Nothing 模式支 持存储计算分离 高性能 基于 Rust 开发的分布式存储引 擎及图计算引擎,精细的内存 管理设计,内置索引系统,支 持毫秒级的并发查询响应速度 易用 AQL(Atlas Graph Query Language) ,类 SQL 的图查询 语言,内置上百种分析函数, 面向分析师友好,拥抱标准, 基于 存储层 副本管理 CRAQ 图原生存储 索引 LSM-Tree 容灾保障 ( BR ) 元数据层 事务管理 MVOCC 计算层 Cypher AST 优化器 图计算 内存加速引 擎 服务接口 HTTP/RPC Spark 连接器 Python UDF 执行器 索引管理 一致性存储 RAFT 分片管理 元数据 集群管理 用户权限0 码力 | 38 页 | 24.68 MB | 1 年前3
使用Rust与ClickHouse构建高效可靠的日志系统资源占用更小,性能更好 • 更友好的开源协议 系统介绍 • 多种接入方式 • Agent • Client • 查询 • LogQL • OpenTSDB • 其他功能 • 多租户 • 自定义索引 • 多维度统计 • 鉴权 • ... 系统介绍 • 写入 • 每天 100G • 磁盘 • 压缩比 1:13 • 内存 • Mencius • 200M左右 • ClickHouse Lowcardinality(Stri ng) • 加速查询 • Skipping Indexes • 日志全文索引 问题 • Rust • Lifetime侵入性比较强 • 库质量参差不齐 • ClickHouse • 可运维性弱 • 强Schema带来不够灵活的缺点 • 全文索引支持比较弱 Thank you!0 码力 | 19 页 | 2.66 MB | 1 年前3
Comprehensive Rust(繁体中文)push_str(..) 等方法。 • &str 中的 & 表示這是參照。我們稍後會講解何謂參照,因此現在只需將 &str 視為代表「唯讀字 串」的單位就行了。 • 被註解掉的那行程式碼會按照位元組位置建立索引到字串中。12..13 的結尾不是字元邊界,因此 程式會發生恐慌。請根據錯誤訊息,將其調整至結尾為字元邊界的範圍。 26 • 原形字串可讓您建立停用逸出功能的 &str 值:r"\n" == "\\n"。只要在引號兩側使用等量的 0: {}", t.0); println!("t.1: {}", t.1); } • 和陣列一樣,元組有固定的長度。 • 元組會將不同型別的值組成複合型別。 • 元組的欄位可透過點號和值的索引存取,例如 t.0、t.1。 • The empty tuple () is referred to as the ”unit type” and signifies absence of a return let s3 = &*s1;. • String 是以包裝函式的形式在位元組向量的四周實作,許多在向量上支援的作業也適用於 String,但需要某些額外保證。 • 請比較各種為 String 建立索引的方法: – 使用 s3.chars().nth(i).unwrap() 變為字元,其中 i 代表是否出界。 – 使用 s3[0..4] 變為子字串,其中該切片會位於字元邊界上,也可能不會。 •0 码力 | 358 页 | 1.41 MB | 11 月前3
Comprehensive Rust(繁体中文) 202406push_str(..) 等方法。 • &str 中的 & 表示這是參照。我們稍後會講解何謂參照,因此現在只需將 &str 視為代表「唯讀字 串」的單位就行了。 • 被註解掉的那行程式碼會按照位元組位置建立索引到字串中。12..13 的結尾不是字元邊界,因此 程式會發生恐慌。請根據錯誤訊息,將其調整至結尾為字元邊界的範圍。 25 • 原形字串可讓您建立停用逸出功能的 &str 值:r"\n" == "\\n"。只要在引號兩側使用等量的 0: {}", t.0); println!("t.1: {}", t.1); } • 和陣列一樣,元組有固定的長度。 • 元組會將不同型別的值組成複合型別。 • 元組的欄位可透過點號和值的索引存取,例如 t.0、t.1。 • The empty tuple () is referred to as the ”unit type” and signifies absence of a return let s3 = &*s1;. • String 是以包裝函式的形式在位元組向量的四周實作,許多在向量上支援的作業也適用於 String,但需要某些額外保證。 • 請比較各種為 String 建立索引的方法: – 使用 s3.chars().nth(i).unwrap() 變為字元,其中 i 代表是否出界。 – 使用 s3[0..4] 變為子字串,其中該切片會位於字元邊界上,也可能不會。 •0 码力 | 356 页 | 1.41 MB | 1 年前3
共 15 条
- 1
- 2













