初识算法和数据结构P1:保姆级图文详解

文章目录

前言

亲爱的家人们,技术图文创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,谢谢大家!有问题请私信或加V:18252587519

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、独立于编程语言

数据结构和算法是独立于编程语言的概念。不仅应用于某种编程语言,还在多种编程语言中实现。这使得数据结构和算法的学习具有广泛的适用性。

相关推荐
-qOVOp-几秒前
zst-2001 历年真题 设计模式
java·算法·设计模式
yaoshengvalve15 分钟前
V型球阀材质性能深度解析:专攻颗粒、料浆与高腐蚀介质的工业利器-耀圣
开发语言·网络·数据结构·c++·安全·材质
evolution_language16 分钟前
LintCode第68题-二叉树的前序遍历,第67题-二叉树的后序遍历
数据结构·算法·新手必刷编程50题
passionSnail27 分钟前
《用MATLAB玩转游戏开发:从零开始打造你的数字乐园》基础篇(2D图形交互)-俄罗斯方块:用旋转矩阵打造经典
算法·matlab·矩阵·游戏程序·交互
yxc_inspire28 分钟前
C++STL在算法竞赛中的应用详解
c++·算法·stl
James. 常德 student31 分钟前
leetcode-hot-100(哈希)
算法·leetcode·哈希算法
金融小师妹1 小时前
量化解析美英协议的非对称冲击:多因子模型与波动率曲面重构
大数据·人工智能·算法
是店小二呀1 小时前
【算法-哈希表】常见算法题的哈希表套路拆解
数据结构·c++·算法·散列表
jiunian_cn1 小时前
【c++】多态详解
java·开发语言·数据结构·c++·visual studio
绿皮的猪猪侠2 小时前
搜索与图论
算法·深度优先·图论