自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 收藏
  • 关注

原创 Python 密码生成器程序设计

回顾本节课所学的 `random` 模块的 `choice()` 和 `shuffle()` 函数,以及字符串的 `join()` 方法的使用,强调这些函数和方法在实际编程中的应用场景,鼓励学员在后续的学习中多使用这些技巧来解决类似的问题。让学员掌握 Python 中 `random` 模块的 `choice()` 和 `shuffle()` 函数的使用,以及字符串的 `join()` 方法的使用,能够编写简单的随机密码生成程序。5. 将打乱顺序后的密码列表中的元素连接成一个字符串作为最终的密码并输出。

2025-02-09 18:40:09 997 1

原创 数字序列字符串拼接程序

**语法**:`[expression for item in iterable]`,其中 `expression` 是对每个 `item` 进行的操作,`item` 是可迭代对象中的元素,`iterable` 是可迭代对象。- `range(start, stop, step)`:生成从 `start` 开始,以 `step` 为步长,到 `stop - 1` 的整数序列(`step` 可以为负数)。- `range(stop)`:生成从 0 开始到 `stop - 1` 的整数序列。

2025-02-09 18:16:03 248

原创 水果派随机选择与展示程序

程序应包含一个水果列表,将列表中的水果随机打乱顺序后,把所有水果名称用逗号连接起来并输出,表示可供选择的水果派种类。然后,从打乱顺序后的水果列表中随机选择一个水果,生成对应的水果派名称并输出,表示用户随机选择的水果派。回顾本节课所学的 `random` 模块的 `shuffle()` 和 `choice()` 函数,以及字符串的 `join()` 方法的使用,强调这些函数和方法在实际编程中的应用场景。让学员自己动手编写代码,完成水果派随机选择与展示程序,并尝试修改水果列表中的元素,观察程序的输出结果。

2025-02-09 17:59:55 396

原创 判断向量是列向量还是行向量

如果一个向量与矩阵相乘,比如矩阵$A$是$m\times n$的矩阵,若向量$x$在$A$的右边相乘,即$A\times x$ ,那么$x$必须是$n\times1$的列向量,这样才能满足乘法规则;例如,$A$是$3\times2$的矩阵,$x$是$2\times1$的列向量,$A$和$x$可以相乘得到一个$3\times1$的列向量;例如,$A$是$2\times3$的矩阵,$v$与$A$相乘得到一个$2\times1$的列向量,那么$v$必然是$3\times1$的列向量。

2025-02-06 00:51:33 203

原创 算法:切饼

通过观察,我们可以总结出一个规律:如果每一刀都尽可能与之前所有的刀相交,那么第n刀可以将饼最多分成\( n + 1 \)块新的部分。4. **第三刀**:第三刀可以最多与前两刀相交两次,这样可以再增加3块饼。1. **初始状态(0刀)**:如果没有切刀,饼就是一个完整的圆。3. **第二刀**:第二刀可以最多与第一刀相交一次,将饼分成最多4块。假设:有一张很大很大的饼,给你一把足够长的刀。2. **第一刀**:切一刀可以将饼分成2块。问题:n刀,最多能切出多少块饼?所以,3刀最多可以切出7块饼。

2025-01-02 20:15:27 394

原创 矩阵与向量的基本概念

如果向量组 \( \{\mathbf{v_1}, \mathbf{v_2}, \ldots, \mathbf{v_k}\} \) 存在非零系数 \( c_1, c_2, \ldots, c_k \) 使得 \( c_1\mathbf{v_1} + c_2\mathbf{v_2} + \ldots + c_k\mathbf{v_k} = 0 \),则这些向量是线性相关的;**一、四个基本子空间的定义** 1. **行空间(Row Space)** 行空间是由矩阵的所有行向量所形成的空间。

2024-12-05 21:39:16 688

原创 均值-方差优化在波动性较高的亚洲新兴市场中应用的论文综述

均值-方差优化在亚洲新兴市场的应用,展示了动态策略的强大潜力。通过结合经典理论、实证研究和现代数据分析技术,投资顾问可以在复杂的市场环境中,为客户提供更具竞争力的投资解决方案。在波动性较高的市场中,如亚洲新兴市场,该策略能帮助投资顾问在动态环境中做出更明智的决策。通过调整投资组合中各资产的权重,均值-方差优化模型可以帮助识别有效前沿,即在给定风险水平下获得最大收益,或在给定收益水平下实现最小风险的所有可能投资组合的集合。均值-方差优化虽然是经典的投资组合策略,但其在亚洲新兴市场的应用需要考虑市场的独特性。

2024-12-04 14:24:43 987

原创 金融数学在股市交易中的具体应用

**例子**: 假设某股票当前价格为100元,行权价为105元,年化无风险利率为5%,波动率为20%,期权到期时间为6个月。- **例子**: 假设投资者有两种资产A和B,预期收益率为10%和6%,标准差为15%和10%,相关系数为0.3。其中,Z值为1.65(对应95%置信水平),\(\sigma\)为标准差(1.5%),\(T\)为持有天数(1天)。通过最小二乘法估计参数\(\beta_0\)和\(\beta_1\),投资者可以预测在给定销售额情况下的股价。其中,\(Z\)为标准正态分布随机变量。

2024-12-04 11:46:01 567

原创 产品经理的投资理财课:开放式基金和封闭式基金

*老师**:大家好,今天我们来讨论证券投资基金的概述,特别是封闭式基金的交易价格受哪些因素影响。**老师**:非常好!基金就好像是一个大大的“钱罐子”,许多人把他们的钱放进去,然后由一个聪明的“基金经理”来帮大家投资,买不同的东西,比如说公司的股票或者其他有价值的东西。**老师**:这是一个有趣的观点,规模确实可能影响投资者的信心,但对于封闭式基金,规模并不是直接影响其交易价格的主要因素。**老师**:嗯,上市公司质量确实影响基金的内在价值,但封闭式基金的交易价格在二级市场上也不是直接由内在价值决定的。

2024-12-02 01:11:06 835

原创 产品经理的财会知识课:资产的减值测试

在资产减值测试中,企业会用一个叫“折现率”的东西,来计算这些未来赚到的钱,折现成今天值多少钱。**老师**:假设我们有一台生产机器,市场上它的公允价值是150万元,但如果我们卖掉它,处置费用需要20万元。1.为了资产减值测试的目的,企业需要对资产未来现金流量进行预计,并选择恰当的折现率对其进行折现,以确定资产预计未来现金流量的现值。**学生B**:嗯,公允价值就是市场上愿意支付的价格,而处置费用就是我们卖掉资产时需要支付的费用,比如佣金和法律费用。同时,他们建立了一个详细的成本清单,供企业未来参考。

2024-12-01 23:25:20 861

原创 关于哈希表的基础知识

### 对于开放寻址法: 1. **检查索引**:查看计算出的索引位置: - 如果该位置的元素与要查找的键相同,则查找成功。原本如果负载因子(小盒子被占用的程度)是0.7,查找失败的平均长度可能是3,但删除一个东西后,如果你遇到空位,可能需要再多打开几个盒子。这样,当你查找东西时,如果经过一个“已删除”的位置,你知道这个地方曾经有东西,可以继续查找后面的盒子。- **已删除元素的干扰**:如果使用标记删除,已删除的位置仍然占用有效空间,导致查找时需要探查这些位置,从而增加平均探查次数。

2024-11-30 17:31:08 372

原创 Floyd算法

想象一下,你想从过山车(A)到摇摇车(C),最开始你可能会认为直接走是最好的选择,但我们可以用Floyd算法来看看是否有更快的办法。如果从过山车到旋转木马的路程是1分钟,从旋转木马到摇摇车是2分钟,而从过山车直接到摇摇车是4分钟,我们就可以用一个表格来表示这些信息。- 从A到B是1分钟,从B到C是2分钟,所以从A到B再到C的总时间是1 + 2 = 3分钟。- 从A到B是1分钟,从B到C是2分钟,所以从A到B再到C的时间是1 + 2 = 3分钟。- 从A到C的时间是3分钟(刚刚更新的)。

2024-11-27 03:36:14 408

原创 图的深度优先搜索算法DFS

我们从顶点 A 开始进行 DFS: 1. **从 A 开始**:我们访问 A。2. **访问 B**:从 A 出发,我们可以选择去 B。3. **访问 D**:从 B,我们可以选择去 D。4. **回退到 B**:D 没有其他未访问的顶点,所以我们回到 B。它可以用在很多地方: - **迷宫探索**:当你在迷宫中寻找出口时,可以使用 DFS 来找到出路。比如说,当我们第一次访问 A 时,我们可以记录一个时间点(比如说,1),当我们完成访问 A 的所有邻接顶点后,我们再记录另一个时间点(比如说,6)。

2024-11-26 20:03:11 390

原创 图的广度优先搜索(BFS)

现在,我们要从滑梯开始,看看这个游乐场里还有哪些好玩的地方,并且我们想知道从滑梯出发,怎么能最快地到达每一个站点。在一个阳光明媚的下午,我坐在窗边,一边喝着咖啡,一边思考一个有趣的问题:如何用广度优先搜索(BFS)解决一个复杂的图遍历问题。**老师**:假设我们在一个迷宫里,迷宫可以看作是一个网格,每个格子是一个节点,相邻的格子之间有边相连。在实现这个小项目的过程中,我意识到BFS不仅仅适用于这样简单的无向图,还可以应用于很多其他领域,比如社交网络分析、网络爬虫、甚至AI中的状态空间搜索。

2024-11-25 05:34:39 642

原创 迪杰斯特拉 (Dijkstra)算法

而有些路很近,时间就短(权值小)。重要的是,这些标牌上的时间都是正数,也就是说,走这条路总是需要花费时间的,不会有负数的时间。在一座繁华的城市里,有一个叫小明的程序员,他是一位典型的ESFP类型:热情、活泼,喜欢探索新事物,尤其对解决实际问题充满兴趣。因为贪心算法总是选择当前看起来最好的东西,就像一个小朋友看到糖果山,总是想先拿最多的糖果,而不是先考虑不同糖果的组合。- 通过D可以到E,计算从A到E经过D需要11分钟(A到D 9分钟 + D到E 2分钟),比之前的12分钟更短,所以更新A到E为11分钟。

2024-11-24 17:23:28 1093 1

原创 哈夫曼树的构建

哈夫曼树通过利用字符的频率来构建,使得出现频率较高的字符拥有较短的编码,而频率较低的字符则拥有较长的编码,从而达到压缩数据的目的。”压缩成了一串比特,显著减少了数据的长度。3. **生成哈夫曼编码**:从哈夫曼树的根节点出发,向左走记为“0”,向右走记为“1”,直到到达叶节点,记录下每个字符的编码。- 在数据压缩中,使用频率较高的字符用较短的编码表示,而频率较低的字符用较长的编码表示,以减少平均编码长度。其中,\(f_i\) 是字符 \(i\) 的频率,\(l_i\) 是字符 \(i\) 的编码长度。

2024-11-21 21:55:57 460

原创 十字链表法

对于每个非零元素,我们用一个三元组 \((row, col, value)\) 来表示,其中 \(row\) 和 \(col\) 分别是元素的行号和列号,\(value\) 是元素的值。- **邻接表**的节点通常只存储图节点及其相邻节点的信息,可以包括边的权重(在加权图中)和指向下一个相邻节点的指针。- **十字链表**的节点存储矩阵中的非零元素的位置(行和列)和值,以及指向同一行和同一列下一个非零元素的指针。- **邻接表**只有一个方向的指针,通常是从当前节点指向下一个相邻节点。

2024-11-21 21:31:07 495

原创 邻接多重表

其主要特点是每条边都由一个特殊的结构表示,这个结构包含指向与该边相连的两个节点的指针,以及指向相邻边的指针。2. **邻接链表**:对于每个节点,链表中包含所有与该节点直接相连的其他节点。- **节省空间**:对于稀疏图(边数远小于节点数的平方),邻接表比邻接矩阵更节省空间,因为它只存储实际存在的边。对于图中的每个节点,邻接表会创建一个列表(或链表),其中包含该节点直接相连的邻接节点的信息。1. **节点数组**:图中的每个节点都有一个对应的数组元素,该元素指向该节点的邻接链表的头。

2024-11-21 21:29:50 333

原创 408第一题

2024-11-21 21:08:29 125

原创 单链表的操作

将 `s` 的 `next` 指针指向 `p` 的 `next`。- 将 `p` 的 `next` 指针指向 `temp->next`。- 将 `s` 的 `next` 指针指向当前的头节点。- 将临时指针 `temp` 指向 `p->next`。- 如果 `p->next` 为空,则没有节点可删除。- 将 `p` 的 `next` 指针指向 `s`。1. **检查 `p` 的 `next` 是否为空:**假设我们要在节点 `p` 后面插入一个新节点 `s`。假设我们要删除节点 `p` 后的节点。

2024-11-21 20:52:24 419

原创 双向链表的操作

如果 `p` 的 `next` 不为空,则将 `p->next` 的 `prev` 指针指向 `s`。- 如果 `p->prev` 不为空,则将 `p->prev->next` 指向 `p->next`。- 如果 `p->next` 不为空,则将 `p->next->prev` 指向 `p->prev`。- 将 `s` 的 `next` 指针指向 `p` 的 `next`。- 将 `s` 的 `prev` 指针指向 `p`。- 将 `p` 的 `next` 指针指向 `s`。2. **调整指针:**

2024-11-21 20:51:21 444

原创 头指针和尾指针

在链表的实现中,头指针和尾指针是常用的概念,它们分别用于指向链表的第一个节点和最后一个节点。- **循环链表**:在循环链表中,尾指针的 `next` 可以指向头指针,形成一个循环结构。- **尾指针**:非常适合在链表末尾进行插入操作,尤其是在需要频繁在末尾插入元素的情况下。- **高效插入**:使用尾指针可以在常数时间内将元素插入到链表末尾,而不需要遍历链表。- **链表遍历**:通过头指针可以很方便地从链表的头部开始遍历整个链表。- 通过尾指针可以快速在链表末尾插入新节点,而无需遍历整个链表。

2024-11-21 20:50:05 689

原创 循环链表结构

循环链表是一种特殊的链表结构,其中链表的最后一个节点的 `next` 指针指向链表的第一个节点,从而形成一个环。循环链表可以是单向的(循环单链表)或双向的(循环双链表)。- 最后一个节点的 `next` 指向头节点,第一个节点的 `prev` 指向最后一个节点。- 最后一个节点的 `next` 指针指向头节点(第一个节点),形成环。- `next` 指向后继节点,`prev` 指向前驱节点。- 每个节点有两个指针:`next` 和 `prev`。// 创建一个循环单链表。// 创建一个循环双链表。

2024-11-21 20:48:57 418

原创 哨兵节点链表

2. **简化边界条件**:由于头节点存在,链表的第一个元素和其他元素的处理方式可以统一,不需要单独处理边界条件。1. **头节点不存储数据**:头节点本身不存储用户数据,它只是一个占位符,以便统一处理链表的各种操作。- **带头节点**:通常在需要频繁插入、删除操作的情况下使用,因为它简化了边界条件的处理。2. **可能需要特殊处理空链表**:在插入、删除操作时,需要处理链表为空时的特殊情况。1. **第一个节点存储数据**:链表中的第一个节点直接存储数据。// 创建一个不带头节点的链表。

2024-11-21 20:48:03 389

原创 逆波兰表达式(Reverse Polish Notation, RPN)

扫描到 \(\times\),弹出 \(7\) 和 \(-1\),计算 \(7 \times -1 = -7\),结果压栈:\[-7\]- 扫描到 \(-\),弹出 \(5\) 和 \(6\),计算 \(5 - 6 = -1\),结果压栈:\[7, -1\]- 扫描到 \(+\),弹出 \(3\) 和 \(4\),计算 \(3 + 4 = 7\),结果压栈:\[7\]- \(5 - 6\) 转换为 \(5 6 -\)- 扫描到 \(6\),压栈:\[7, 5, 6\]

2024-11-21 16:53:14 497

原创 波兰表达式(前缀表达式)

波兰表达式通过固定的操作顺序和无需括号的特性,在计算机科学中提供了简化表达式解析和计算的方式。- 扫描到 \(\times\),弹出 \(-1\) 和 \(15\),计算 \(-1 \times 15 = -15\),结果压栈:\[-15\]- 扫描到 \(-\),弹出 \(5\) 和 \(6\),计算 \(5 - 6 = -1\),结果压栈:\[-1, 15\]- 扫描到 \(+\),弹出 \(7\) 和 \(8\),计算 \(7 + 8 = 15\),结果压栈:\[15\]

2024-11-21 16:49:29 505

原创 C++对象的四大基本特性

在这个例子中,`Animal`类的`speak`方法被声明为虚函数,`Dog`类重写了`speak`方法。当通过`Animal`类型的指针调用`speak`时,实际调用的是`Dog`类的`speak`方法。在这个例子中,`Animal`类定义了一组具有`name`和`age`属性以及`speak`行为的对象。在这个例子中,`Dog`类继承了`Animal`的属性和方法,并增加了一个新的方法`bark`。在这个例子中,`obj1`和`obj2`的值相同,但它们的地址(标识符)不同。

2024-11-20 02:52:01 407

原创 按位非的计算

:计算`a`和`b`的按位非结果,并存储在`not_a`和`not_b`中。- `std::cout << "按位非-21的结果: " << not_a << std::endl;`:输出`-21`按位非后的结果。- `std::cout << "按位非21的结果: " << not_b << std::endl;`:定义两个整数变量`a`和`b`,值分别为`-21`和`21`。- 再加1得到原数的绝对值:`0001 0110`,即十进制中的`22`。让我们分别计算`-21`和`21`的按位非。

2024-11-19 23:29:04 352

原创 位操作和位掩码

位掩码在这里是 `0xF`,即二进制 `00001111`,它用于选择性地保留 `value` 的最低 4 位。通过这种方式,我们成功地保留了 `value` 的最低 4 位,而忽略了其他位。**背景**:我们有一个整数 `value`,其二进制表示为 `11101`。- 这个掩码的作用是只保留最低 4 位,因为掩码的最低 4 位是 1,而其他位是 0。// 只保留最低 4 位。- `value` 的二进制表示是 `11101`,即十进制的 29。- `0xF` 的二进制表示是 `00001111`。

2024-11-19 18:47:35 423

原创 插入排序insertsort

`range(1, len(arr))`: 生成从1到数组长度减1的数字序列。- 插入 `key` 到 `arr[j + 1]`,即 `arr[0] = 11`,数组变为 `[11, 12, 13, 5, 6]`- 插入 `key` 到 `arr[j + 1]`,即 `arr[0] = 5`,数组变为 `[5, 11, 12, 13, 6]`- 插入 `key` 到 `arr[j + 1]`,即 `arr[1] = 6`,数组变为 `[5, 6, 11, 12, 13]`我们来一步步分析这两种情况。

2024-11-17 08:56:42 567

原创 算法和程序的区别

通过算法和程序的对比,我们可以看出,算法关注的是解决问题的策略和理论基础,而程序关注的是如何利用编程语言将这些策略付诸实践。**老师:** 没错!- **算法选择**:小明考虑使用一种机器学习算法,比如线性回归(Linear Regression),因为它擅长处理连续数据,可以预测未来趋势。**学生小明(INTJ):** 老师,我一直在思考,为什么我们在学习编程时,总是先讲算法再讲程序实现?- **例子**:设计一个排序算法,比如快速排序(Quicksort),定义它的步骤:选择基准、分区、递归排序。

2024-11-16 14:47:03 1439

原创 快速排序算法Quicksort

`void quickSort(std::vector& arr, int low, int high)`:函数声明,`void`表示函数无返回值,`std::vector&`为引用传递,允许修改传入的数组。- **平均情况**:递归栈的深度为`log n`,每次递归调用时,栈中只需要存储当前的函数调用状态,因此空间复杂度是`O(log n)`。- `#include `:预处理指令,用于引入标准输入输出流库,支持`std::cout`和`std::endl`。

2024-11-16 14:46:00 270

原创 北京大学c++程序设计听课笔记101

运行程序时,他看到`num`的值为42,`ptr`存储的是`num`的内存地址,解引用(dereference)`ptr`后又得到了42。在一个风和日丽的早晨,你走进了计算机科学课的教室,发现桌上放着一张神秘的地图,上面画满了各种指针和箭头。内存就像一座巨大的城市,每个地址都是一栋独立的房子,而指针就是这座城市的地图,帮助他找到并访问每个房子里的内容。例如,`int*`指针通常指向一个4字节的整数数据。小明惊讶地发现,尽管他没有直接操作变量`num`,但通过指针`ptr`,他成功地改变了`num`的值。

2024-11-14 15:39:07 1164

原创 c和cpp的异常处理

try-catch`结构是用于异常处理的,并且通常是在C++或其他高级语言中使用。在C语言中,异常处理通常通过返回错误代码和使用`setjmp`和`longjmp`函数来实现。在这个例子中,`setjmp`用于保存当前的执行环境,如果调用`longjmp`,则程序会返回到`setjmp`的调用点,并从那里继续执行。这种方法可以模拟类似`try-catch`的行为,但需要手动管理。在C++中,`try-catch`语句用于异常处理。- 如果没有匹配的`catch`块,程序将终止。

2024-11-11 23:13:12 444

原创 哈希冲突和解决办法

**时间复杂度**:在理想情况下,哈希表的查找、插入和删除操作都可以在平均O(1)的时间内完成。这个简单的哈希表实现展示了基本的插入、查找和删除操作。- **哈希函数**:哈希表利用哈希函数将键转换为数组中的索引,以在内部数组中存储和检索数据。- **键值对存储**:哈希表通过键(key)来访问对应的值(value),每个键是唯一的。3. **哈希函数质量**:性能依赖于哈希函数的质量,低质量的哈希函数可能导致较多冲突。- **哈希函数依赖**:性能依赖于哈希函数的质量,差的哈希函数可能导致大量冲突。

2024-11-11 20:21:15 444

原创 好算法的特性

**排序算法**:对于某些排序算法(例如快速排序),一个已经排序好的数组或一个所有元素都相同的数组可能会导致算法的性能从平均的 \(O(n \log n)\) 退化到最坏情况的 \(O(n^2)\)。比如说,假设我们有一个计算平方根的函数,如果输入是负数,算法应该给出适当的处理,比如抛出异常或返回错误信息,而不是直接导致程序崩溃。例如,在计算三角形面积时,如果三点共线,这就是一个退化的情况,因为这种情况下无法形成一个有效的三角形,从而导致面积计算无法进行‌。**老师**:没错!**老师**:正是如此!

2024-11-11 20:13:32 574

原创 表的数据结构和常见操作

**应用场景**:用于处理或显示所有元素,数组和链表可以简单地线性遍历,树和图则需要特定的遍历算法(如深度优先搜索、广度优先搜索)。- **定义**:链表是一种线性数据结构,其中元素存储在节点中,每个节点包含数据和指向下一个节点的指针。- **定义**:数组是一个简单的线性数据结构,其中元素按顺序存储,每个元素可以通过其索引直接访问。- **定义**:图是一种复杂的数据结构,由节点(顶点)和连接这些节点的边组成。- **适用场景**:需要快速查找、插入和删除的数据集合,如字典和集合。

2024-11-11 18:05:54 588

原创 Hailstone Sequence冰雹序列

**若 `n` 是奇数** (`n % 2` 不为 0):执行 `n = 3 * n + 1`。如果 `n = 16`,它是偶数,所以 `(16 % 2)` 为假,执行 `n /= 2`,即 `n` 变为 8。总体来说,选择使用 `n > 1` 还是 `1 < n` 是一种风格上的选择,通常这两种方式可以互换使用,具体采用哪种风格取决于个人或团队的偏好。2. **取模运算 `%`**:`n % 2` 用于判断 `n` 是奇数还是偶数。`n % 2` 如果为 0,则 `n` 是偶数;

2024-11-11 17:25:58 648

原创 堆heap的讨论、习题与代码

首先是构建堆需要\(O(n)\),然后每次删除最大或最小值需要\(O(\log n)\),执行\(n\)次。**学生(ESFP)**:好的,插入和删除都是\(O(\log n)\),获取最大或最小元素是\(O(1)\),构建堆是\(O(n)\),堆排序是\(O(n \log n)\)。**老师(ENTP)**:对的!- **递归的空间复杂度**:如果使用递归实现插入或删除操作,可能会需要 \(O(h)\) 的额外空间,\(h\) 为堆的高度(对于完全二叉树,\(h = \log n\))。

2024-11-04 22:58:03 819

原创 树对比数组和列表的优点(双语)

它允许高效的优先队列操作,提供 \(O(1)\) 时间访问最小或最大元素,以及 \(O(\log n)\) 的插入和删除时间。**Student**: Well, vectors offer excellent search efficiency with operations like binary search achieving \(O(\log n)\) time complexity. (向量在搜索方面效率很高,比如二分查找可以达到 \(O(\log n)\) 的效率。这就是树的用武之地吗?

2024-11-04 19:53:03 314

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部