算法
文章平均质量分 72
Sylvia_feiyu
每天都是崭新的一天!!!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
堆排序算法
堆是一种基于完全二叉树的数组结构,分为最大堆和最小堆,满足父节点值不小于(不大于)子节点值的性质。其核心操作包括向下调整(AdjustDown)和向上调整(AdjustUp),用于维护堆的性质。建堆采用自底向上方法,时间复杂度为O(n)。堆排序通过反复将堆顶元素与末尾交换并调整堆,实现升序排序,时间复杂度为O(n log n),空间复杂度O(1)。使用数组存储可高效支持完全二叉树的随机访问,优于链表。原创 2026-10-11 21:59:17 · 450 阅读 · 0 评论 -
动态规划【1】:斐波那契数列模型
本文介绍了四个动态规划问题的解法: 泰波那契数:使用动态规划计算第n个泰波那契数,初始状态为0,1,1,递推公式为dp[i]=dp[i-1]+dp[i-2]+dp[i-3],可以通过空间优化将复杂度降为O(1)。 三步问题:计算到达第n阶楼梯的方法数,每次可以走1-3步,递推公式为dp[i]=dp[i-1]+dp[i-2]+dp[i-3],注意处理大数取模。 最小花费爬楼梯:两种解法:(1)正序计算到达每层的最小花费;(2)逆序计算从每层到顶层的最小花费,返回前两层中的较小值。 解码方法:计算字符串解码方式原创 2026-07-11 23:02:27 · 280 阅读 · 0 评论 -
数组站:1.数组中重复的数字
摘要:本文探讨了在长度为n的数组(元素范围0~n-1)中查找任意重复数字的问题。给出了三种解决方案:排序后遍历(会改变原数组)、辅助数组计数(空间复杂度O(n)),以及最优的原地交换法(空间复杂度O(1))。重点阐述了第三种方法的核心思想:通过将元素交换到对应下标位置来检测重复,当nums[i]与nums[nums[i]]相等时即找到重复值。文末提供了C++实现代码,分析其时间复杂度为O(n),空间复杂度为O(1),但会改变原数组结构。(149字)原创 2026-07-02 23:36:03 · 347 阅读 · 0 评论 -
插入排序算法
本文介绍了使用插入排序算法对整数数组进行升序和降序排列的实现方法。核心思想是将待排序元素(key)插入到已排序序列的适当位置。对于升序排列,当key前面的元素较大时将其后移覆盖;对于降序则相反。关键步骤包括:1)保存key值;2)与前面元素比较并后移覆盖后面的值;3)将key插入正确位置。边界条件是数组下标不小于0。代码示例展示了完整的排序过程,只需调整比较条件即可实现升序/降序切换。时间复杂度为O(n²),适合小规模数据排序。原创 2026-06-22 20:18:03 · 580 阅读 · 0 评论
分享