文章目录
前言
亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力,谢谢大家!有问题请私信或联系邮箱:fn_kobe@163.com
1、算法例子
1.1、查字典(二分查找算法)
①问题描述:
在查找字典中某个字时,常按照拼音字母顺序查找。该过程在查找过程中不断缩小范围,逐步定位目标字。
②算法分析:
查字典过程是二分查找经典实现。具体步骤包括:
将字典分为两部分,通过比较中间位置字母来决定是否查找前半部分或后半部分。
每次根据字母顺序排除一半范围,直到找到目标字。
③算法本质:
二分查找算法在数据量大情况下能显著提高查找效率,时间复杂度为 O(log n),比起线性查找O(n)高效。
1.2、整理扑克(插入排序算法)
①问题描述:
在打牌时需要将手中扑克牌从小到大排列。该过程通过不断将一张扑克牌插入到已经排序好部分来实现。
②算法分析:
扑克牌整理过程是插入排序算法。在每一轮中,从无序部分抽出一张扑克牌,并将其插入到有序部分的正确位置,直到所有扑克牌有序为止。
③算法本质:
插入排序是一种简单且直观排序算法,适用于小规模数据集。时间复杂度为 O(n^2),但在数据量较小或已接近有序时,表现较好。
1.3、货币找零(贪心算法)
①问题描述:
在超市购物时,收银员需要找零。收银员通过选择面额较大货币来尽量减少找零次数。
②算法分析:
该过程采用贪心算法,每一步都选择当前最优选择(即用最大面额找零),直到达到所需零钱。
③算法本质:
贪心算法通过在每个步骤选择局部最优解来期望得到全局最优解。尽管这种策略在某些情况下无法保证最优解,但对于大多数货币找零问题,提供有效的解决方案。
2、算法与数据结构
2.1、算法定义
①定义:解决特定问题的一组指令或操作步骤,具备以下特性:
i:明确问题定义:包括输入和输出清晰界定。
ii:可行性:算法能在有限步骤、时间和内存空间内完成。
iii:确定性:算法每个步骤都有明确意义,且在相同输入和条件下,输出结果一致。
2.2、数据结构定义
①定义:组织和存储数据方式,包含数据内容、数据间关系以及对数据操作方法。其设计目标:
i:节省空间:减少内存占用。
ii:高效操作:包括数据访问、添加、删除和更新等操作。
iii:简洁性:数据结构应简洁并提供足够逻辑信息,帮助算法高效执行。
iv:设计权衡:在设计数据结构时,常常需要在不同方面作出权衡,例如:
链表:在数据添加和删除上更便捷,但牺牲数据访问速度。
图:提供更丰富逻辑信息,但需要更多内存空间。
2.3、数据结构与算法关系
i:数据结构是算法基石:算法需要基于某种数据结构来进行数据的存储和操作。
ii:算法为数据结构注入生命力:数据结构本身只能存储数据,通过算法才能实现对数据的操作和问题解决。
iii:算法执行效率与数据结构密切相关:不同的数据结构在执行同一个算法时,可能会导致效率上的差异,选择合适数据结构至关重要。
类比拼装积木:数据结构与算法可以比作一套拼装积木:
输入数据:未拼装的积木。
数据结构:积木的组织形式,包括形状、大小、连接方式等。
算法:一系列拼装积木的操作步骤。
输出数据:最终拼装好的积木模型。
2.4、独立于编程语言
数据结构和算法是独立于编程语言概念。不仅应用于某种编程语言,还在多种编程语言中实现。数据结构和算法学习具有广泛适用性。