
算法
文章平均质量分 77
基本算法学习
qqxhb
共享、学习
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
零基础数据结构与算法——第八章 算法面试准备-小结
本章系统介绍了算法面试准备与学习路径规划,包括面试概述、常见题型(数组/字符串、树/图、动态规划等)及解题策略,并提供了零基础与进阶两种学习路径。通过系统化学习、高效刷题和模拟面试可提升通过率。配套8道典型练习题(如找第K大元素、LRU缓存实现、二叉树深度等)和6本推荐读物(《剑指Offer》《编程珠玑》等),帮助读者构建算法知识体系,为技术面试和职业发展奠定基础。(149字)原创 2025-08-20 08:47:14 · 196 阅读 · 0 评论 -
零基础数据结构与算法——第八章 算法面试准备-数组/字符串/链表/树/动态规划/回溯
本章介绍了算法面试的准备与学习路径,重点分析了算法面试的重要性、常见形式和评估标准。详细讲解了各类面试题型的解题策略,包括数组与字符串、链表、树与图、动态规划以及回溯与递归问题,并提供了典型例题的代码实现。算法面试旨在评估候选人的问题分析、算法设计、代码实现和沟通表达能力,是技术招聘中的关键环节。原创 2025-08-19 09:08:04 · 1348 阅读 · 0 评论 -
零基础数据结构与算法——第七章:算法实践与工程应用-小结
本章系统介绍了算法实践与工程应用的核心知识,包括算法实现技巧、性能优化方法、常用算法库使用及实际应用案例。重点讲解了代码可读性、边界处理、性能分析工具等关键技术,并列举了搜索引擎、推荐系统等典型应用场景。通过7个实践练习题(如LRU缓存实现、图像边缘检测等)和5本推荐读物(《Effective Java》《算法工程》等),帮助读者将算法理论转化为工程实践能力,为成为优秀算法工程师奠定基础。原创 2025-08-18 08:22:27 · 186 阅读 · 0 评论 -
零基础数据结构与算法——第七章:算法实践与工程应用-图像处理
本文介绍了图像处理中的两种核心算法实现。首先展示了高斯模糊滤波的Java实现,通过创建高斯核并进行归一化处理,实现了图像平滑效果。其次介绍了边缘检测算法,使用Sobel算子计算图像梯度,通过水平和垂直方向卷积检测边缘特征。代码示例展示了完整的图像处理流程,包括边界处理、卷积运算和结果归一化。这些算法是计算机视觉领域的基础技术,广泛应用于图像增强和特征提取等场景。原创 2025-08-18 08:19:40 · 341 阅读 · 0 评论 -
零基础数据结构与算法——第七章:算法实践与工程应用-金融算法
本文介绍了金融领域常用的三类算法模型及其代码实现:1. 风险评估模型采用加权特征计算信用评分,并将结果映射到标准信用分数范围;2. 交易策略基于移动平均线交叉原理,通过比较短期和长期均线生成买卖信号;3. 欺诈检测系统通过分析交易金额异常、频率异常和地理位置异常来识别可疑交易。这些算法模型均采用Java实现,展示了金融科技中典型的数据处理逻辑和风险控制方法。原创 2025-08-15 09:07:59 · 620 阅读 · 0 评论 -
零基础数据结构与算法——第七章:算法实践与工程应用-推荐系统
推荐系统是利用算法为用户提供个性化内容推荐的技术,主要分为基于内容、协同过滤和混合推荐三种类型。协同过滤算法包括基于用户和基于物品两种实现方式,核心是计算用户或物品之间的相似度(如余弦相似度),通过评分预测生成推荐列表。示例代码展示了基于用户的协同过滤实现,包括相似度计算和推荐物品选择,以及基于物品的协同过滤中的物品相似度矩阵构建过程。这些算法通过分析用户历史行为数据实现个性化推荐。原创 2025-08-14 10:03:37 · 430 阅读 · 0 评论 -
零基础数据结构与算法——第七章:算法实践与工程应用-搜索引擎
摘要:本文介绍了Java算法库的选择与使用要点,包括功能需求、性能要求、可靠性等关键因素,并提供了算法库封装的最佳实践。同时展示了算法在实际工程中的应用案例,重点讲解了搜索引擎中的核心技术:倒排索引实现文档快速检索、TF-IDF算法计算词的重要性以及PageRank算法评估网页权重。文中包含详细的Java代码示例,如GraphUtils封装类、InvertedIndex索引构建、TFIDF计算和PageRank迭代实现等,为开发者提供了实用的算法应用参考。原创 2025-08-14 09:58:14 · 611 阅读 · 0 评论 -
零基础数据结构与算法——第七章:算法实践与工程应用-Java算法库
本文介绍了Java中常用的算法库使用,包括标准库和第三方库。标准库部分涵盖了集合框架(排序、查找等)、数组工具类、字符串处理和数学工具。第三方库部分介绍了Apache Commons(集合运算)、Guava(不可变集合)、JGraphT(图论算法)和Apache Math(统计分析)等实用库。这些库提供了丰富的算法实现,能够显著提高开发效率,避免重复造轮子。文章通过代码示例展示了各库的基本用法。原创 2025-08-13 09:39:10 · 338 阅读 · 0 评论 -
零基础数据结构与算法——第七章:算法实践与工程应用-性能优化策略
本文介绍了程序性能优化的策略与平衡之道。优化策略分为四个层次:1)算法优化,如将O(n²)算法改为O(n log n);2)数据结构优化,选择更适合问题的数据结构;3)代码级优化,如减少循环计算;4)并行化处理。文中通过生活案例和Java代码示例生动说明每种策略的应用场景。同时强调优化需平衡性能与可读性,建议遵循"先正确再优化、测量后优化、注释优化代码"等原则。最后通过素数判断示例展示了如何编写既高效又易读的代码。原创 2025-08-13 09:29:18 · 388 阅读 · 0 评论 -
零基础数据结构与算法——第七章:算法实践与工程应用-性能分析与瓶颈
本文介绍了性能分析与优化的方法,通过汽车保养等生活例子类比编程优化过程。首先阐述了性能分析工具的重要性,包括性能分析器、基准测试、内存分析工具等,帮助定位程序瓶颈。然后分析了常见的性能瓶颈:不必要的对象创建、方法调用、IO操作和同步机制,通过代码示例对比展示了优化前后的差异。文章强调通过专业工具诊断问题并针对性优化,可以有效提升程序性能,就像精准维修汽车能显著改善其运行状态。这些优化技巧适用于各种编程场景,有助于开发高效稳定的软件系统。原创 2025-08-12 09:52:45 · 287 阅读 · 0 评论 -
零基础数据结构与算法——第七章:算法实践与工程应用-实现技巧
本文探讨了算法在实际工程中的应用技巧,重点强调代码可读性、维护性和边界条件处理。良好的命名规范、注释文档、模块化设计和错误处理能显著提升代码质量,而正确处理边界条件(如空输入、极值等情况)则是确保算法健壮性的关键。通过厨房整理、家具组装等生活类比,生动说明了这些工程实践的重要性。原创 2025-08-12 09:49:07 · 830 阅读 · 0 评论 -
零基础数据结构与算法——第六章:算法设计范式与高级主题-本章小结
本章系统介绍了算法设计范式和高级主题,涵盖设计技巧(问题分解、时空权衡等)、常见范式(分治、贪心、动态规划等)、复杂性理论(NP完全、近似算法等)及实际应用(图处理、机器学习等)。配套练习题包括分治最近点对、随机素数测试等8个算法实现任务,并推荐《算法导论》《计算复杂性》等扩展读物,帮助读者深入掌握算法设计与分析的核心方法。原创 2025-08-07 08:27:15 · 302 阅读 · 0 评论 -
零基础数据结构与算法——第六章:算法设计范式与高级主题-实际应用案例-机器学习算法
机器学习算法从数据中学习模式和规律,广泛应用于预测分析、图像识别等领域。主要类型包括监督学习(如线性回归、神经网络)、无监督学习(如K-means聚类)、强化学习和深度学习(如CNN、RNN)。示例展示了K-means聚类算法的Java实现,通过随机初始化聚类中心、迭代分配样本和更新中心点来完成聚类。该算法包含计算样本距离、更新聚类中心等核心方法,适用于数据分群等场景。原创 2025-08-07 08:21:06 · 430 阅读 · 0 评论 -
零基础数据结构与算法——第六章:算法设计范式与高级主题-实际应用案例-优化算法
本文介绍了优化算法在实际问题中的应用,重点讨论了遗传算法解决旅行商问题的实现。文章概述了常见优化算法类别,包括线性规划、整数规划、启发式算法和梯度下降法,并提供了Java实现的遗传算法框架代码示例,展示如何初始化种群、评估适应度、进化和获取最优解。该算法可通过调整参数如种群规模、变异率等来优化求解过程,适用于组合优化问题。原创 2025-08-07 08:18:49 · 220 阅读 · 0 评论 -
零基础数据结构与算法——第六章:算法设计范式与高级主题-实际应用案例-图/字符串算法
图算法是解决现实世界中各种网络结构问题的强大工具。图可以表示各种关系和连接,从社交网络到交通系统,从互联网到电力网络。图算法在许多实际问题中都有广泛的应用,如社交网络分析、路由规划、网络流量分析等。字符串处理算法在文本编辑、生物信息学、网络搜索等领域有广泛的应用。常见的字符串处理算法包括:1. **字符串匹配算法**:如KMP算法、Boyer-Moore算法、Rabin-Karp算法等。2. **字符串编辑距离算法**:如Levenshtein距离、Hamming距离等。3. **后原创 2025-08-06 08:35:47 · 837 阅读 · 0 评论 -
零基础数据结构与算法——第六章:算法设计范式与高级主题-在线算法与竞争分析
**在线算法**是一种在不知道完整输入的情况下,逐步处理输入并产生输出的算法。与之相对的是**离线算法**,它可以访问整个输入数据。在线算法的特点:- 必须立即对每个输入做出决策,不能等待未来的输入- 一旦做出决策,不能撤销或修改- 必须在不完整信息的情况下工作**竞争分析**是评估在线算法性能的一种方法,它比较在线算法的解与最优离线算法的解。**竞争比**是在线算法成本与最优离线算法成本的最大比值。原创 2025-08-06 08:30:26 · 443 阅读 · 0 评论 -
零基础数据结构与算法——第六章:算法设计范式与高级主题-随机化算法
随机化算法是一种在算法执行过程中引入随机性的算法。这种随机性可以帮助算法避免最坏情况的输入,或者在某些情况下提高算法的效率和可靠性。随机化算法通过引入随机决策,使得算法的行为不再是确定性的,这样可以:- 避免对特定输入的不良性能- 打破对称性和规律性- 简化复杂问题的解决方案原创 2025-08-05 08:17:59 · 370 阅读 · 0 评论 -
零基础数据结构与算法——第六章:算法设计范式与高级主题-NP-完全问题近似解
本文介绍了NP-完全问题的近似解法。由于NP-完全问题难以在多项式时间内求得精确解,近似算法通过牺牲一定精确度来换取计算效率。文章阐述了近似比的概念,列举了旅行商问题、图着色问题等典型NP-完全问题及其生活应用。重点以旅行商问题为例,展示了贪心算法(最近邻算法)的实现过程,并提供了Java代码示例。同时介绍了其他近似算法如最小生成树算法、首次适应算法等,以及贪心策略、局部搜索等设计技巧。这些方法广泛应用于物流配送、网络设计等实际场景中,为解决复杂优化问题提供了实用方案。原创 2025-08-05 08:10:39 · 1327 阅读 · 0 评论 -
零基础数据结构与算法——第六章:算法设计范式与高级主题-算法复杂性(NP)
算法复杂性理论研究问题的计算难度和算法效率,将问题分为不同类别。P类问题(如排序、最短路径)可在多项式时间解决;NP类问题(如因数分解)可快速验证解,但未必能快速求解;NP-完全问题(如旅行商问题)是NP中最难的,其解决意味着P=NP;NP-难问题则更难,可能不属于NP。这些分类指导算法选择:对P类问题寻求精确解,对NP-完全问题采用近似或启发式算法。复杂性分析有助于资源评估和问题转化,为计算难题提供解决策略,如近似算法、随机化方法等。P与NP的关系仍是计算机科学核心未解问题。原创 2025-07-31 08:24:42 · 346 阅读 · 0 评论 -
零基础数据结构与算法——第六章:算法设计范式与高级主题-常见算法范式(动态规划)
动态规划是一种通过分解问题为重叠子问题并存储解来优化计算的算法范式。其核心思想包括最优子结构和重叠子问题两个关键特性。动态规划有两种实现方式:自顶向下的记忆化搜索和自底向上的表格填充。典型应用包括最长公共子序列、背包问题等优化问题。算法通过定义状态、建立转移方程、设置初始条件等步骤实现,能有效降低时间复杂度但可能增加空间复杂度。与贪心算法和分治法相比,动态规划能保证全局最优解但实现难度较高,适用于资源分配、序列分析等需要全局优化的问题场景。原创 2025-07-30 08:33:26 · 1328 阅读 · 0 评论 -
零基础数据结构与算法——第六章:算法设计范式与高级主题-常见算法范式(变治&贪心)
本文介绍了两种常见算法范式:变治法和贪心法。变治法通过转换问题表示简化求解,包含实例简化、表示变换和数据结构转换三种类型,典型应用如霍纳法则;贪心法基于局部最优选择寻求全局最优解,适用于满足最优子结构和贪心选择性质的问题,典型应用包括硬币找零和最小生成树算法。两种方法各有特点:变治法能利用已有高效算法但转换过程可能复杂,贪心法简单高效但对问题结构要求严格。文章通过生活实例和代码示例(如多项式求值和硬币找零)具体说明了两种范式的应用场景和实现方式。原创 2025-07-30 08:24:09 · 628 阅读 · 0 评论 -
零基础数据结构与算法——第六章:算法设计范式与高级主题-常见算法范式(分治&减治)
分治法是解决复杂问题的重要算法范式,通过将问题分解为多个相同或相似的子问题,递归求解后合并结果。其核心步骤包括分解、解决和合并,适用于子问题独立且解可合并的场景。典型应用包括归并排序、快速排序等。相比动态规划,分治法处理的是相互独立的子问题。减治法则通过逐步缩小问题规模来解决问题,如二分查找。掌握这些算法范式能帮助开发者更高效地解决各类计算问题,并优化算法性能。原创 2025-07-29 08:21:11 · 940 阅读 · 0 评论 -
零基础数据结构与算法——第六章:算法设计范式与高级主题-设计技巧(下)
预处理与索引技术通过预先组织数据(如排序、哈希表)来加速后续查询,类似于图书馆分类系统或厨房备菜。常见方法包括前缀和(O(n)预处理后O(1)区间查询)、二维前缀和等,广泛应用于数据库、图像处理和搜索引擎。增量更新则通过只处理数据变化部分提升效率,如滑动窗口双端队列法将窗口最大值查找从O(nk)优化到O(n)。这两种技术都体现了"前期投入换取长期效率"的核心思想,在动态数据处理场景中尤为重要。原创 2025-07-29 08:13:09 · 865 阅读 · 0 评论 -
零基础数据结构与算法——第六章:算法设计范式与高级主题-设计技巧(上)
本章介绍了高级算法设计范式,重点探讨了两种核心技巧:问题分解和时空权衡。问题分解通过将复杂问题拆分为更小子问题(如归并排序的分治策略)来简化求解过程,类比于准备晚餐或组织旅行的任务分解方法。时空权衡则需要在内存使用和执行效率间做出选择,例如斐波那契数列计算中,记忆化搜索(空间换时间)相比朴素递归显著提升了效率。这些技术为处理复杂问题提供了系统化的解决思路,通过合理运用分解策略和资源优化,能够设计出更高效的算法解决方案。原创 2025-07-28 08:26:38 · 777 阅读 · 0 评论 -
零基础数据结构与算法——第五章:高级算法-小结(动态&贪心&回溯&分支限界)
本章系统介绍了四种高级算法:动态规划、贪心算法、回溯算法和分支限界法。动态规划通过存储子问题解优化效率,适用于背包问题等;贪心算法采用局部最优策略,常用于调度问题;回溯法通过试错搜索解空间,解决组合问题;分支限界法结合剪枝策略寻找最优解。每种算法各有特点,实际应用中需根据问题特性选择合适方法,并可结合多种算法优势。本章还提供了相关练习题和推荐阅读资源,帮助巩固算法知识并拓展应用能力。原创 2025-07-28 08:18:38 · 777 阅读 · 0 评论 -
零基础数据结构与算法——第五章:高级算法-分支限界问题&旅行商
摘要:本文介绍了使用分支限界法解决旅行商问题的经典算法。该问题要求找到访问所有城市并返回起点的最短路径,属于NP-Hard问题。算法通过优先队列管理搜索空间,计算路径下界进行剪枝优化。文中给出了详细的下界计算方法、搜索树构建过程(以4城市为例)和Java实现代码,包括节点类定义和边界计算逻辑。时间复杂度最坏为O(n!),但实践中因剪枝可显著提升效率。与动态规划和贪心算法相比,分支限界法在中小规模问题上能获得精确解,适用于物流配送等实际场景。文章还包含距离矩阵示例和算法各步骤的图解说明。原创 2025-07-24 08:57:49 · 279 阅读 · 0 评论 -
零基础数据结构与算法——第五章:高级算法-分支限界法
摘要: 分支限界法是一种求解最优化问题的算法,通过系统枚举解空间并利用上下界估计剪枝无效搜索。其核心流程包括分支(将问题分解为子问题)、限界(计算子问题的上下界)和剪枝(放弃超出最优解范围的子问题)。与回溯法相比,分支限界法采用广度优先或最佳优先搜索,专注于寻找最优解而非全部解。实现方式包括队列式(FIFO顺序)和优先队列式(按评价函数排序),后者通常效率更高。该算法适用于旅行商、背包等问题,但可能面临高空间复杂度和组合爆炸的挑战,其效率取决于上下界估计的准确性。原创 2025-07-23 08:11:17 · 887 阅读 · 0 评论 -
零基础数据结构与算法——第五章:高级算法-分支限界问题&0-1背包
摘要: 本文介绍了0-1背包问题的分支限界解法。问题要求在容量限制下选择物品(选或不选)使总价值最大。分支限界法通过优先队列管理搜索空间,优先探索上界高的节点,利用剪枝优化效率。关键步骤包括:按单位价值排序物品,计算节点上界(已选价值+剩余容量贪心估值),通过优先队列扩展可行节点并更新最优解。代码实现中,通过Node类记录状态,getBound函数计算上界,优先队列确保高效搜索。该方法有效减少了搜索空间,适用于组合优化问题。原创 2025-07-23 08:08:24 · 335 阅读 · 0 评论 -
零基础数据结构与算法——第五章:高级算法-回溯算法优化&剪枝&状态记忆&排序&位运算
回溯算法虽然强大,但在处理大规模问题时效率可能不足。本文介绍了几种优化技巧:1)剪枝,通过约束条件提前终止无效搜索;2)状态记忆,记录已计算状态避免重复计算;3)排序预处理,通过数据排序提高剪枝效果;4)位运算优化,用位操作表示状态节省资源。这些技巧可单独或组合使用,能显著提升回溯算法的性能。实际应用中应根据问题特点选择合适的优化策略,以解决更复杂的问题。原创 2025-07-22 08:15:43 · 422 阅读 · 0 评论 -
零基础数据结构与算法——第五章:高级算法-回溯算法&子集&全排列问题
本文介绍了两种经典回溯算法问题:子集问题和全排列问题。对于子集问题,通过递归构建所有可能的子集组合,时间复杂度为O(2^n);对于全排列问题,采用回溯法生成所有可能的排列,时间复杂度为O(n!)。文中通过生活实例(餐厅菜单组合、嘉宾座次安排)帮助理解问题本质,并提供了详细的Java代码实现,包括优化版本。两种问题都通过树形结构图解展示了回溯过程,其中子集问题考虑元素选/不选两种状态,而全排列问题则关注元素的排列顺序。代码实现中强调了回溯算法的典型模式:选择、递归、回溯。原创 2025-07-22 08:10:30 · 336 阅读 · 0 评论 -
零基础数据结构与算法——第五章:高级算法-回溯算法&N皇后问题
文章摘要 回溯算法是一种通过试错思想解决问题的算法,它探索所有可能的解空间,遇到无效解时回退并尝试其他路径。该算法适用于组合、排列、子集、路径等问题,如经典的N皇后问题。回溯算法采用深度优先搜索策略,通过递归实现,其核心步骤包括定义解空间、确定终止条件、遍历可能选择以及回溯恢复状态。虽然实现简单且能穷尽所有解,但时间复杂度较高,通常为指数级。N皇后问题展示了回溯算法的典型应用,通过逐行放置皇后并检查冲突,最终找到所有合法解。该算法在解决约束满足类问题时表现出色,但需注意其性能限制。原创 2025-07-21 08:29:30 · 1079 阅读 · 0 评论 -
零基础数据结构与算法——第五章:高级算法-贪心算法-分数背包&霍夫曼编码
本文介绍了两种经典贪心算法问题:分数背包问题和霍夫曼编码。分数背包问题要求在容量限制下选择物品使总价值最大,解法是按单位价值排序后优先选取高价值物品。霍夫曼编码则是一种变长前缀编码方法,通过构建最小堆来创建霍夫曼树,为高频字符分配短编码、低频字符分配长编码,从而最小化总编码长度。文章详细解释了霍夫曼树的构建过程,并提供了Java代码实现,展示了从字符频率统计到最终编码生成的全过程。这些算法展示了贪心策略在不同场景下的高效应用。原创 2025-07-21 08:23:23 · 571 阅读 · 0 评论 -
零基础数据结构与算法——第五章:高级算法-贪心算法-基础&示例
贪心算法是一种通过每一步选择局部最优解来寻求全局最优解的算法。其核心思想是在每个步骤中选择当前最优的选择,而不考虑后续影响。贪心算法适用于具有最优子结构和贪心选择性质的问题,如活动选择、找零钱等问题。与动态规划相比,贪心算法更简单高效,但不保证所有问题都能得到全局最优解。经典应用包括活动选择问题,通过按结束时间排序并每次选择最早结束的活动来最大化活动数量。贪心算法的设计需要验证正确性,这是其关键难点。原创 2025-07-17 09:16:10 · 667 阅读 · 0 评论 -
零基础数据结构与算法——第五章:高级算法-动态规划经典-背包问题
摘要:本文介绍了动态规划中的经典背包问题及其变种。0-1背包问题要求每件物品只能选择一次,通过二维或优化后的一维DP数组求解。完全背包问题则允许无限次使用物品,解法与0-1背包类似但遍历顺序不同。文章还讲解了编辑距离问题,通过DP计算两个字符串间的最小操作数(插入、删除、替换)。这些算法在资源分配、拼写检查等领域有广泛应用,是理解动态规划思想的典型案例。每种问题都给出了详细的状态转移方程、初始条件和Java实现代码。原创 2025-07-16 09:24:34 · 1123 阅读 · 0 评论 -
零基础数据结构与算法——第五章:高级算法-动态规划经典-斐波那契数列
本文介绍了两个经典动态规划问题:斐波那契数列和最长递增子序列(LIS)。对于斐波那契数列,展示了递归解法的问题(重复计算)并提供了自底向上和自顶向下两种动态规划解法,以及空间优化版本。对于LIS问题,详细解释了状态定义和转移方程,给出基本解法并介绍了更优的二分查找优化方案。两种问题都通过图解和代码示例展示了求解过程,分析了时间和空间复杂度,为理解动态规划提供了清晰的范例。原创 2025-07-16 09:16:16 · 702 阅读 · 0 评论 -
零基础数据结构与算法——第五章:高级算法-动态规划基础
动态规划是一种将复杂问题分解为子问题的优化方法。其核心思想是:最优子结构(问题最优解包含子问题最优解)和重叠子问题(子问题重复出现)。实现过程包括定义状态、确定状态转移方程、设定初始条件、确定计算顺序和得出最终结果。动态规划有自顶向下(记忆化搜索)和自底向上(迭代)两种实现方式:前者更直观但效率较低,后者更高效但需明确状态转移顺序。两种方法各有优劣,适用于不同场景。通过类比拼图、最短路径规划等生活实例,可以更直观理解动态规划的原理和应用。原创 2025-07-15 08:15:00 · 295 阅读 · 0 评论 -
零基础数据结构与算法——第四章:基础算法-分治与总结
本文介绍了四种基础算法:排序算法(包括冒泡、选择、插入排序及高效算法)、搜索算法(线性、二分、插值、跳跃搜索)、递归算法(概念与应用)和分治算法(分解-解决-合并三步骤)。重点阐述了分治法的原理及其在归并排序、快速排序和最大子数组问题中的应用,并提供了Java实现示例。这些算法是解决复杂问题的基础,理解它们有助于提升算法设计能力。文章最后推荐了相关学习资料。原创 2025-07-15 08:06:15 · 904 阅读 · 0 评论 -
零基础数据结构与算法——第四章:基础算法-递归算法
递归算法通过将问题分解为更小的子问题来求解,包含基本情况和递归情况两个关键部分。典型应用包括阶乘计算、斐波那契数列和汉诺塔问题。与迭代相比,递归代码更简洁但效率较低,可能引发栈溢出。尾递归优化可避免栈问题,其特点是递归调用为最后执行的语句。实际应用中需权衡递归与迭代的选择,根据问题特点采用合适解法。原创 2025-07-14 08:47:54 · 218 阅读 · 0 评论 -
零基础数据结构与算法——第四章:基础算法-搜索算法(跳跃)
跳跃搜索是一种针对有序数组的搜索算法,通过固定步长跳跃减少比较次数。其核心思想是先大步跳跃确定区间,再在线性搜索。最优步长为√n,时间复杂度O(√n)。相比线性搜索更快,比二分搜索更简单但稍慢,适用于单向链表等结构。实际应用包括数据库索引、文件系统搜索等场景。该算法结合了跳跃和线性搜索的优势,在特定情况下比传统搜索方法更高效。原创 2025-07-14 08:45:11 · 601 阅读 · 0 评论 -
零基础数据结构与算法——第四章:基础算法-搜索算法(插值)
插值搜索是二分搜索的改进算法,适用于均匀分布的有序数据集。它通过计算目标值在数据范围内的可能位置(而非简单取中点)来快速定位搜索区间,平均时间复杂度可达到O(log log n)。算法步骤包括初始化边界、插值公式计算估计位置、比较并调整搜索范围。相比二分搜索,插值搜索对均匀分布数据效率更高,但存在最坏情况O(n)复杂度、计算开销较大等缺点。实际应用于数据库索引、电话簿查询等场景,特别适合大规模且分布均匀的数据搜索。代码实现需注意边界条件和除零保护。原创 2025-07-11 08:12:56 · 972 阅读 · 0 评论