算法与数据结构(2)
三年前发布过一篇算法与数据结构
https://blog.csdn.net/weixin_42209307/article/details/81122419?spm=1001.2014.3001.5501
今天, 对编程了解的更新, 博主再来更新一下我理解的思想, 我想先把这两个概念先拆开讲, 我们先讲数据结构.
数据结构
1, 结构是什么?
我们需要一个新的东西, 比如一个三角形, 它的名称是 s
- 我们假设 [a,b,c] 就是 基础数据 它没办法再细了, 别再去想 a b c 又是什么数据结构
- a,b,c 以特定的方式设计, 然后我称上面这种组成方式就是 s 的数据结构
2, 单纯的数据有什么意义?
单纯的数据结构是没有太大的意义的, 就比如地上的一片绿叶, 沙漠里的一粒沙子, 只有当别人需要它的时候, 或者它参与了一个更大的行为, 它才产生了价值, 就比如
['裤子', '鞋子', '衣服']
你看上面这些数据, 有用吗?, 有的人可能会回答, 当然有用, 这个东西我们可以用来做分类, 标签什么的, 可是它现在在硬盘里面趟着, 你怎么用???, 所以单纯的数据结构是没有意义的, 要想试它有用, 就得用到我们的算法了, 也可以称之为过程, 行为等
算法
1, 算法是什么
算法也可以叫过程, 行为, 等, 每个人有每个人不同的理解, 算法是基于需求的, 没有需求的算法没有意义, 你都不知道你干嘛, 你的行为自然毫无意义,
最简单直接的算法, 去拿桌子上的苹果
大脑发出信号 (博主生物不懂, 所以不要纠结这个案例的真实性)
-> 先判断一下自己有没有手
-> 发现自己有手
-> 调用能量提供者肌肉啊,脂肪什么的, 把这次移动的能量准备好
-> 肌肉拉伸多少力, 弯曲多少度
-> .... 此处省略一万个过程
-> 苹果到了手上
// 这个案例也说明了, 单纯的数据是没有意义的, 就比如这个案例中的脂肪,
// 它就放在那, 你也知道它是干嘛的(提供能量),
// 但是没有过程, 它没有参与行为, 它就是没用的
2, 为什么算法和数据结构息息相关
我们创建了一个地皮, 现在有一个需求, 找到名称为 e 的地皮, 正常情况下, 最简单的方式, 那肯定是轮训查找, 一个个去查, 但是这样的效率, 肯定是最低下的, 这现在只有8个还好, 假如有1千万个呢?, 而且你要找的那个还刚好在最后一个, 那不是要循环一千万次,
现在我们升级算法
正常情况下, 我们走, 轮训查找 正常添加
而现在, 我们在添加的时候, 先在记录本里面记录一下, 它的位置, 找的时候直接拿着位置去找, 就样效率就会大大提升
问题
- 记录本里面你还不是要一个个找? 首先这个记录本是系统api支持的, 我们用 e 去找, 能很快的得到 e 的位置, 最终的结构是物理级的, 操作系统还有操作系统自己的数据结构和算法, 记住, 最终是物理级的
- 其实上面这个结构, 地皮如果是单排排列, 这就是一个典型的索引系统, 将关键词创建索引, 数组对应hash
- 地皮 + 记事本 + 我们添加和查找时候使用的算法, 你也可以称之为函数, 就组成了算法与数据结构
所以有些公司为什么要单独招算法工程师, 算法优化了, 效率能有很大提升