Hello 算法 1.0.0b4 C++版
章“数组与链表”,然后再回头理解物理结构 的含义。数组与链表是其他所有数据结构的基石,建议你投入更多时间深入了解这两种基本 数据结构。 3.2. 基本数据类型 谈及计算机中的数据,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织形式 各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用。它包括: ‧ 整数类型 Unicode 是一种字符集标准,本质上是给每个字符分配一个编号(称为“码点”),但它并没有规定在计算机 中如何存储这些字符码点。我们不禁会问:当多种长度的 Unicode 码点同时出现在同一个文本中时,系统 如何解析字符?例如,给定一个长度为 2 字节的编码,系统如何确认它是一个 2 字节的字符还是两个 1 字节 的字符? 对于以上问题,一种直接的解决方案是将所有字符存储为等长的编码。如下图所示,“Hello”中的每个字符 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复出这个短语的内容了。 Figure 3‑7. Unicode 编码示例 然而,ASCII 码已经向我们证明,编码英文只需要 1 字节。若采用上述方案,英文文本占用空间的大小将会 是 ASCII 编码下大小的 2 倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 3. 数据结构 hello‑algo.com 47 3.40 码力 | 343 页 | 27.39 MB | 1 年前3Hello 算法 1.1.0 C++ 版
配内存实现长度变化,从而具备 一定的“动态性”。 Tip 如果你感觉物理结构理解起来有困难,建议先阅读下一章,然后再回顾本节内容。 3.2 基本数据类型 当谈及计算机中的数据时,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织 形式各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种。 字节。 Unicode 是一种通用字符集,本质上是给每个字符分配一个编号(称为“码点”),但它并没有规定在计算机 中如何存储这些字符码点。我们不禁会问:当多种长度的 Unicode 码点同时出现在一个文本中时,系统如 何解析字符?例如给定一个长度为 2 字节的编码,系统如何确认它是一个 2 字节的字符还是两个 1 字节的字 符? 对于以上问题,一种直接的解决方案是将所有字符存储为等长的编码。如图 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复这个短语的内容了。 图 3‑7 Unicode 编码示例 然而 ASCII 码已经向我们证明,编码英文只需 1 字节。若采用上述方案,英文文本占用空间的大小将会是 ASCII 编码下的两倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 3.4.4 UTF‑8 编码 目前,UTF‑8 已成为国际上使用最广泛的0 码力 | 379 页 | 18.47 MB | 1 年前3Hello 算法 1.0.0b5 C++版
以在程序运行过程中 对其长度进行调整。 � 如果你感觉物理结构理解起来有困难,建议先阅读下一章“数组与链表”,然后再回顾本节内 容。 3.2 基本数据类型 谈及计算机中的数据,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织形式 各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种类型。 Unicode 是一种字符集标准,本质上是给每个字符分配一个编号(称为“码点”),但它并没有规定在计算机 中如何存储这些字符码点。我们不禁会问:当多种长度的 Unicode 码点同时出现在同一个文本中时,系统 如何解析字符?例如给定一个长度为 2 字节的编码,系统如何确认它是一个 2 字节的字符还是两个 1 字节的 字符? 对于以上问题,一种直接的解决方案是将所有字符存储为等长的编码。如图 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复出这个短语的内容了。 图 3‑7 Unicode 编码示例 然而 ASCII 码已经向我们证明,编码英文只需要 1 字节。若采用上述方案,英文文本占用空间的大小将会是 ASCII 编码下大小的两倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 第 3 章 数据结构 hello‑algo.com 60 3.40 码力 | 377 页 | 30.69 MB | 1 年前3Hello 算法 1.0.0 C++版
初始化后,仍可以在程序运行过程中对其长 度进行调整。 � 如果你感觉物理结构理解起来有困难,建议先阅读下一章,然后再回顾本节内容。 3.2 基本数据类型 当谈及计算机中的数据时,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织 形式各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种。 字节。 Unicode 是一种通用字符集,本质上是给每个字符分配一个编号(称为“码点”),但它并没有规定在计算机 中如何存储这些字符码点。我们不禁会问:当多种长度的 Unicode 码点同时出现在一个文本中时,系统如 何解析字符?例如给定一个长度为 2 字节的编码,系统如何确认它是一个 2 字节的字符还是两个 1 字节的字 符? 对于以上问题,一种直接的解决方案是将所有字符存储为等长的编码。如图 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复这个短语的内容了。 图 3‑7 Unicode 编码示例 然而 ASCII 码已经向我们证明,编码英文只需 1 字节。若采用上述方案,英文文本占用空间的大小将会是 ASCII 编码下的两倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 3.4.4 UTF‑8 编码 目前,UTF‑8 已成为国际上使用最广泛的0 码力 | 378 页 | 17.59 MB | 1 年前3Hello 算法 1.2.0 简体中文 C++ 版
配内存实现长度变化,从而具备 一定的“动态性”。 Tip 如果你感觉物理结构理解起来有困难,建议先阅读下一章,然后再回顾本节内容。 3.2 基本数据类型 当谈及计算机中的数据时,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织 形式各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种。 字节。 Unicode 是一种通用字符集,本质上是给每个字符分配一个编号(称为“码点”),但它并没有规定在计算机 中如何存储这些字符码点。我们不禁会问:当多种长度的 Unicode 码点同时出现在一个文本中时,系统如 何解析字符?例如给定一个长度为 2 字节的编码,系统如何确认它是一个 2 字节的字符还是两个 1 字节的字 符? 对于以上问题,一种直接的解决方案是将所有字符存储为等长的编码。如图 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复这个短语的内容了。 图 3‑7 Unicode 编码示例 然而 ASCII 码已经向我们证明,编码英文只需 1 字节。若采用上述方案,英文文本占用空间的大小将会是 ASCII 编码下的两倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 3.4.4 UTF‑8 编码 目前,UTF‑8 已成为国际上使用最广泛的0 码力 | 379 页 | 18.48 MB | 10 月前3Hello 算法 1.2.0 繁体中文 C++ 版
,請返回陣列中最大的 ? 個元素。 對於該問題,我們先介紹兩種思路比較直接的解法,再介紹效率更高的堆積解法。 8.3.1 方法一:走訪選擇 我們可以進行圖 8‑6 所示的 ? 輪走訪,分別在每輪中提取第 1、2、…、? 大的元素,時間複雜度為 ?(??) 。 此方法只適用於 ? ≪ ? 的情況,因為當 ? 與 ? 比較接近時,其時間複雜度趨向於 ?(?2) ,非常耗時。 圖 8‑6 走訪尋找最大的 hello‑algo.com 244 圖 11‑12 堆積排序步驟 在程式碼實現中,我們使用了與“堆積”章節相同的從頂至底堆積化 sift_down() 函式。值得注意的是,由 於堆積的長度會隨著提取最大元素而減小,因此我們需要給 sift_down() 函式新增一個長度參數 ? ,用於指 定堆積的當前有效長度。程式碼如下所示: // === File: heap_sort.cpp === 建堆積操作:堆積化除葉節點以外的其他所有節點 for (int i = nums.size() / 2 - 1; i >= 0; --i) { siftDown(nums, nums.size(), i); } // 從堆積中提取最大元素,迴圈 n-1 輪 for (int i = nums.size() - 1; i > 0; --i) { // 交換根節點與最右葉節點(交換首元素與尾元素) swap(nums[0]0 码力 | 379 页 | 18.79 MB | 10 月前3C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming
但是我们可以变通一下,既然从返回值优化不行,从参数入手怎样?首先已知 sqrt(0) 等 于 0 ,所以我们其实可以转换成: • return x >= 0 ? sqrt(x) : sqrt(0); • 然后再把 sqrt 提取出来得到: • return sqrt(x >= 0 ? x : 0); • 再应用无分支优化: • return sqrt((x >= 0) * x); • 大功告成,对于 x < 0 的情况会变成0 码力 | 47 页 | 8.45 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化
然而只要去掉 (dt * dt) 的括号就会优化失败: 因为乘法是左结合的,就相当于 (b[i] * dt) * dt 编译器识别不到不变量,从而优化失败。 因此,要么帮编译器打上括号帮助他识别,要 么手动提取不变量到循环体外。 调用不在另一个文件的函数: SIMD 优化失败 因为编译器看不到那个文件的 other 函数里是什么,哪怕 other 在定义他的文件里是个空函数,他也不敢优化掉。 解决方案:放在同一个文件里0 码力 | 108 页 | 9.47 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串
Linux 命令行实验 Linux 命令行实验 字符串应用实战(作业) 第 10 章 课后作业 • 输入是一个文本文件 a.txt : • 1 xxx • 4 yyyyyyy • 3 zzzz • 2 wwwww • 要求按照前面的数字排序,输 出到另一个文本文件 b.txt : • 1 xxx • 2 wwwww • 3 zzzz • 4 yyyyyyy 非常感谢相依同学提供了这道有趣的题目:0 码力 | 162 页 | 40.20 MB | 1 年前3现代C++ 教程:高速上手C++11/14/17/20
1. 检查一个串是否包含某种形式的子串; 2. 将匹配的子串替换; 3. 从某个串中取出符合条件的子串。 正则表达式是由普通字符(例如 a 到 z)以及特殊字符组成的文字模式。模式描述在搜索文本时要 匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 57 6.1 正则表达式简介 第 6 章正则表达式 普通字符 普通字符包括没有显式指定为元字 能够匹配一个小写字母组成的字符串。在正则表达式中一个 . 表示匹配任意字 符,而 \. 则表示匹配字符 .,最后的 txt 表示严格匹配 txt 则三个字母。因此这个正则表达式的 所要匹配的内容就是由纯小写字母组成的文本文件。 std::regex_match 用于匹配字符串和正则表达式,有很多不同的重载形式。最简单的一个形式就是 传入 std::string 以及一个 std::regex 进行匹配,当匹配成功时,会返回0 码力 | 83 页 | 2.42 MB | 1 年前3
共 15 条
- 1
- 2