<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ULTRAmanTAROACE的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ULTRAmanTAROACE]]></copyright><item><title><![CDATA[基于range的函数式编程C++，python比较]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/156157836</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/156157836</guid><author>ULTRAmanTAROACE</author><pubDate>Mon, 22 Dec 2025 17:29:48 +0800</pubDate><description><![CDATA[Python 和 Kotlin 在表达这种算法时确实更优雅，而 C++ 在性能和类型安全上更有优势。选择哪种语言取决于你的具体需求！Kotlin 和 Python 的函数式编程确实可以更简洁地实现这个逻辑。特性 Python Kotlin C++20 Ranges。为什么 Python/Kotlin 更简洁？函数式支持 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐。类型安全 ⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐。简洁性 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐。可读性 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐。性能 ⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐。]]></description><category></category></item><item><title><![CDATA[C++20 Ranges与函数式编程举例]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/156157483</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/156157483</guid><author>ULTRAmanTAROACE</author><pubDate>Mon, 22 Dec 2025 17:21:50 +0800</pubDate><description><![CDATA[我们可以用 transform 来计算水仙花数的各位数字幂次和。虽然使用transform和字符串转换的方法很优雅，但性能可能不如直接使用整数运算。水仙花数的常见值：153, 370, 371, 407, 1634, 8208, 9474, 54748, …我来详细介绍C++20 Ranges中的这些操作，并给出水仙花数的示例。这样改写后，水仙花数的判断逻辑完全融入了Ranges的函数式编程风格！· 学习/演示：展示Ranges的各种用法。· 性能优先：使用传统的整数运算方法。更简化的版本（C++23）]]></description><category></category></item><item><title><![CDATA[传值还是传引用？c++，python对比]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/156058299</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/156058299</guid><author>ULTRAmanTAROACE</author><pubDate>Thu, 18 Dec 2025 16:28:22 +0800</pubDate><description><![CDATA[操作PythonJavaC++传参（基本/不可变）引用（表现如值）值（primitive） / 引用副本（对象）值（拷贝）传参（容器/可变）引用（共享对象）引用副本（可修改内容）值（拷贝整个容器，除非用返回值返回对象引用primitive：值；对象：引用返回值（通常移动或 RVO 优化）赋值 a = ba 绑定到 b 所指对象primitive：值拷贝；对象：引用拷贝深拷贝（调用 operator=）push 到容器存储对象引用存储对象引用拷贝或移动元素（值语义）]]></description><category></category></item><item><title><![CDATA[函数指针数组]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155998447</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155998447</guid><author>ULTRAmanTAROACE</author><pubDate>Wed, 17 Dec 2025 08:02:48 +0800</pubDate><description><![CDATA[希望这个解释能让你完全理解 int (*var[5])(void);如果你对函数指针数组的具体应用场景（比如如何用它实现一个简单的计算器或游戏状态机）感兴趣，我可以进一步举例说明。在 C++ 中，int (*var[5])(void);元素类型 int (*)(void)，即“指向返回 int 且无参函数的指针”。你可以把 int (*[5])(void) 想象成这种函数指针的“数组类型”。var 的本质 它是一个数组，其元素是函数指针。数组大小 固定为 5。]]></description><category></category></item><item><title><![CDATA[实现一个完整的C++ TimSort算法]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155987317</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155987317</guid><author>ULTRAmanTAROACE</author><pubDate>Tue, 16 Dec 2025 18:10:45 +0800</pubDate><description><![CDATA[基于搜索结果，我来为你实现一个完整的C++ TimSort算法，支持任意可比较类型。这个实现参考了Python和Java中的TimSort算法设计。这个实现参考了Python和Java中的TimSort算法，在保持算法核心思想的同时，提供了简洁的C++接口。我来为你实现一个完整的C++ TimSort算法，支持任意可比较类型的排序。]]></description><category></category></item><item><title><![CDATA[Informed RRT*算法，并包含圆形障碍物环境]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155985659</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155985659</guid><author>ULTRAmanTAROACE</author><pubDate>Tue, 16 Dec 2025 17:01:54 +0800</pubDate><description><![CDATA[我将为你实现一个基于Matplotlib可视化的Informed RRT*算法，并包含圆形障碍物环境。这个实现包含了Informed RRT*的所有关键特性，并提供了丰富的可视化功能。这个矩阵变换方法不仅代码更简洁，而且数学上更优雅，更容易理解和维护。变换矩阵的方法也更符合计算机图形学和机器人学中的标准实践。· 调整step_size：较小的步长（10-15）适合复杂环境，较大的步长（20-30）适合开阔环境。· 修改neighbor_radius：通常设置为step_size的1.5-2倍。]]></description><category></category></item><item><title><![CDATA[informedRRT*路径规划算法流程解析（伪代码）]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155974589</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155974589</guid><author>ULTRAmanTAROACE</author><pubDate>Tue, 16 Dec 2025 12:06:20 +0800</pubDate><description><![CDATA[这个流程图清晰地展示了Informed RRT*算法的核心改进：在找到初始路径后，将采样限制在能够改进当前解的超椭球区域内，从而大幅提高收敛速度。INFORMED RRT* 算法伪代码流程图。· 虚线框：可选或条件执行块。· 矩形框：处理/计算步骤。· 菱形框：判断/决策点。· 圆角矩形：开始/结束。(2) 路径生成流程。]]></description><category></category></item><item><title><![CDATA[Informed RRT*实现椭圆启发式采样]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155950235</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155950235</guid><author>ULTRAmanTAROACE</author><pubDate>Mon, 15 Dec 2025 20:16:33 +0800</pubDate><description><![CDATA[这个Informed RRT实现能够在找到第一条路径后显著加速优化过程，通过椭圆采样将搜索集中在有希望找到更好路径的区域，从而比标准RRT更快收敛到最优路径。· generateRandomPoint(): 在找到路径后，90%的概率使用椭圆采样，10%的概率使用原始采样。· generateEllipseRandomPoint(): 在连接起点和终点的椭圆内生成随机点。· updateBestPath(): 当找到新的更好路径时更新状态。· 这确保了在找到路径后，搜索集中在有希望找到更好路径的区域。]]></description><category></category></item><item><title><![CDATA[STL deque 的详细特征]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155949527</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155949527</guid><author>ULTRAmanTAROACE</author><pubDate>Mon, 15 Dec 2025 19:30:09 +0800</pubDate><description><![CDATA[front()/back() O(1) 访问首尾。pop_front() 指向被删元素的迭代器失效。push_front() O(1) 平均分摊。push_back() O(1) 平均分摊。pop_front() O(1) 平均分摊。后端插入 O(1) 分摊O(1) O(1)pop_back() O(1) 平均分摊。operator[] O(1) 随机访问。随机访问 O(1) O(1) O(n)前端插入 O(1) O(n) O(1)中间插入 O(n) O(n) O(1)]]></description><category></category></item><item><title><![CDATA[C++的STL中的multimap与map比较]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155949407</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155949407</guid><author>ULTRAmanTAROACE</author><pubDate>Mon, 15 Dec 2025 19:20:31 +0800</pubDate><description><![CDATA[考虑替代方案：有时 map<Key, vector> 可能比multimap更方便，特别是需要随机访问特定键的所有值时。删除 erase(key) 删除一个元素 erase(key) 删除所有匹配键的元素。插入 insert() 或 operator[] 只能使用 insert()· 使用map：当需要键值对且键是唯一的，或者需要通过键快速查找/修改值。计数 count() 返回0或1 count() 返回键出现的次数。场景2：使用map模拟multimap功能。操作 map multimap。]]></description><category></category></item><item><title><![CDATA[归并排序算法实现，kotlin，c++，python]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155945727</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155945727</guid><author>ULTRAmanTAROACE</author><pubDate>Mon, 15 Dec 2025 16:20:05 +0800</pubDate><description><![CDATA[好的，我们来详细、系统地解释归并算法（Merge Algorithm）及其核心逻辑。归并算法（Merge Algorithm）是将两个或两个以上已经有序的序列合并成一个新的有序序列的过程。它是归并排序（Merge Sort）算法的核心组成部分。一个关键点：归并算法本身不负责排序，它负责合并。它假设输入的子序列已经是排好序的，然后高效地将它们合并。我们用一个具体的例子来说明。目标：合并成一个有序数组 C。· 时间复杂度：O(n + m)，其中n和m是两个输入序列的长度。因为每个元素只需比较和复制一次。]]></description><category></category></item><item><title><![CDATA[排序算法之快排与TIMSORT的比较测试，python]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155945063</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155945063</guid><author>ULTRAmanTAROACE</author><pubDate>Mon, 15 Dec 2025 15:57:09 +0800</pubDate><description><![CDATA[需要我帮你分析测试结果的预期趋势，或针对某个语言的实现进行性能优化（如减少拷贝、使用原地排序）吗？一、Python 性能测试代码。三、C++ 性能测试代码。二、Go 性能测试代码。]]></description><category></category></item><item><title><![CDATA[C++的MAP与红黑树]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155944286</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155944286</guid><author>ULTRAmanTAROACE</author><pubDate>Mon, 15 Dec 2025 15:29:12 +0800</pubDate><description><![CDATA[std::map（红黑树）和std::unordered_map（哈希表）是C++中互补的两种重要数据结构。你之前实现的红黑树展现了map底层的有序世界，而unordered_map则代表了基于哈希函数的快速无序查找。如果你对哈希表的具体实现细节（比如如何设计哈希函数、如何处理冲突的链表结构）或者红黑树与哈希表在更复杂场景下的性能对比感兴趣，我可以为你提供更深入的解释。因此，你之前实现的红黑树更接近 std::map 的底层原理，而 unordered_map 则使用了不同的技术路线。]]></description><category></category></item><item><title><![CDATA[二叉树，红黑树初学]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155944002</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155944002</guid><author>ULTRAmanTAROACE</author><pubDate>Mon, 15 Dec 2025 15:22:40 +0800</pubDate><description><![CDATA[类型定义是否自平衡普通二叉搜索树（BST）满足左子 < 根 < 右子的二叉树❌ 否AVL 树自平衡 BST，任意节点左右子树高度差 ≤ 1✅ 是红黑树（Red-Black Tree）自平衡 BST，通过颜色标记和5条性质维持近似平衡✅ 是若查找为主→ 选AVL 树若插入/删除频繁→ 选红黑树若数据量小或随机性强 →普通 BST足够且简单两者都是 O(log n) 的高效结构，红黑树牺牲少量平衡性换取更低的维护成本，因此在工程实践中更常用。]]></description><category></category></item><item><title><![CDATA[插入排序算法实现（二分查找搜索版本）]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155942493</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155942493</guid><author>ULTRAmanTAROACE</author><pubDate>Mon, 15 Dec 2025 14:28:42 +0800</pubDate><description><![CDATA[这个二分插入排序相比普通插入排序的主要优点是减少了比较次数，特别是当数组较大时，这个优势会更明显。· 对未排序部分的每个元素，使用二分查找在已排序部分找到插入位置。· 最坏情况：O(n²) - 但移动元素的次数与普通插入排序相同。· 使用二分查找减少比较次数（从O(n)降到O(log n)）· 平均情况：O(n²) - 但比较次数比普通插入排序少。· O(1) - 原地排序，只需要常数级别的额外空间。· 最好情况：O(n) - 数组已经有序时。· 但元素移动的次数没有减少。· 然后移动元素并插入。]]></description><category></category></item><item><title><![CDATA[各种排序算法时间复杂度分析和实现和优势]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155931728</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155931728</guid><author>ULTRAmanTAROACE</author><pubDate>Mon, 15 Dec 2025 09:30:09 +0800</pubDate><description><![CDATA[基数排序 O(d·(n + k)) O(d·(n + k)) O(d·(n + k)) O(n + k) ✓ d是最大位数。希尔排序 O(n log n) - O(n²) O(n log n) O(n²) O(1) ✗ 改进的插入排序。归并排序 O(n log n) O(n log n) O(n log n) O(n) ✓ 稳定，适合外排序。快速排序 O(n log n) O(n log n) O(n²) O(log n) ✗ 分治，实际最快。算法 平均情况 最好情况 最坏情况 空间复杂度 稳定性 说明。]]></description><category></category></item><item><title><![CDATA[快速排序（分治思想）算法]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155931518</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155931518</guid><author>ULTRAmanTAROACE</author><pubDate>Mon, 15 Dec 2025 09:23:53 +0800</pubDate><description><![CDATA[这种分治策略在数据量较大时特别有效，因为它减少了递归调用的开销，同时利用插入排序在小数据集上的优势。· 插入排序：对小数组使用插入排序（时间复杂度 O(n²)但在小规模数据上更快）· 最坏情况：O(n²)（但通过三数取中法大大降低了概率）· 三数取中法：选择更好的枢纽元素，避免最坏情况。· 尾递归优化：较小的子数组先处理，减少递归深度。· 空间复杂度：O(log n)（递归栈深度）· 迭代版本：使用栈代替递归，避免栈溢出。· 平均时间复杂度：O(n log n)· 递归版本：代码简洁，但可能栈溢出。]]></description><category></category></item><item><title><![CDATA[KDTREE based RRT*类型注释版本]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155917349</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155917349</guid><author>ULTRAmanTAROACE</author><pubDate>Sun, 14 Dec 2025 20:18:12 +0800</pubDate><description><![CDATA[这些类型标注使代码更加清晰，有助于静态类型检查工具（如 mypy）进行错误检查，也提高了代码的可读性和可维护性。]]></description><category></category></item><item><title><![CDATA[KD-Tree的查询原理]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155917124</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155917124</guid><author>ULTRAmanTAROACE</author><pubDate>Sun, 14 Dec 2025 19:58:21 +0800</pubDate><description><![CDATA[KD-Tree（k-dimensional tree）是一种用于多维空间的数据结构，特别适合范围搜索和最近邻搜索。这使得KD-Tree成为高维空间最近邻搜索的最高效数据结构之一，特别适合RRT*这类需要频繁进行最近邻查询的算法！好的，让我详细解释KD-Tree的查询原理，以及为什么它能将时间复杂度从O(n)降到O(log n)。对于n个随机分布的点，KD-Tree最近邻搜索的期望时间复杂度为O(log n)。注意：当n较小时，KD-Tree的构建开销可能超过搜索收益，但n越大优势越明显！]]></description><category></category></item><item><title><![CDATA[基于KD-Tree的RRT*路径规划算法]]></title><link>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155917031</link><guid>https://blog.youkuaiyun.com/ULTRAmanTAROACE/article/details/155917031</guid><author>ULTRAmanTAROACE</author><pubDate>Sun, 14 Dec 2025 19:50:56 +0800</pubDate><description><![CDATA[实现一个使用KD-Tree的RRT*路径规划算法，并提供一个REWIRE函数（重连接优化函数）。使用Scipy的KD-Tree进行高效的最近邻搜索替代了传统的线性搜索，大幅提高搜索效率。这个实现可以轻松集成到机器人导航、自动驾驶等系统中，通过调整step_size、neighbor_radius等参数可以平衡规划速度和质量。]]></description><category></category></item></channel></rss>