算法与数据结构(2)

算法与数据结构(2)

三年前发布过一篇算法与数据结构

https://blog.csdn.net/weixin_42209307/article/details/81122419?spm=1001.2014.3001.5501

今天, 对编程了解的更新, 博主再来更新一下我理解的思想, 我想先把这两个概念先拆开讲, 我们先讲数据结构.

数据结构

1, 结构是什么?

我们需要一个新的东西, 比如一个三角形, 它的名称是 s
在这里插入图片描述

  1. 我们假设 [a,b,c] 就是 基础数据 它没办法再细了, 别再去想 a b c 又是什么数据结构
  2. a,b,c 以特定的方式设计, 然后我称上面这种组成方式就是 s 的数据结构

2, 单纯的数据有什么意义?

单纯的数据结构是没有太大的意义的, 就比如地上的一片绿叶, 沙漠里的一粒沙子, 只有当别人需要它的时候, 或者它参与了一个更大的行为, 它才产生了价值, 就比如

['裤子', '鞋子', '衣服']

你看上面这些数据, 有用吗?, 有的人可能会回答, 当然有用, 这个东西我们可以用来做分类, 标签什么的, 可是它现在在硬盘里面趟着, 你怎么用???, 所以单纯的数据结构是没有意义的, 要想试它有用, 就得用到我们的算法了, 也可以称之为过程, 行为等

算法

1, 算法是什么

算法也可以叫过程, 行为, 等, 每个人有每个人不同的理解, 算法是基于需求的, 没有需求的算法没有意义, 你都不知道你干嘛, 你的行为自然毫无意义,

最简单直接的算法, 去拿桌子上的苹果

大脑发出信号 (博主生物不懂, 所以不要纠结这个案例的真实性)
-> 先判断一下自己有没有手
-> 发现自己有手
-> 调用能量提供者肌肉啊,脂肪什么的, 把这次移动的能量准备好
-> 肌肉拉伸多少力, 弯曲多少度
-> .... 此处省略一万个过程
-> 苹果到了手上

// 这个案例也说明了, 单纯的数据是没有意义的, 就比如这个案例中的脂肪, 
// 它就放在那, 你也知道它是干嘛的(提供能量),
// 但是没有过程, 它没有参与行为, 它就是没用的

2, 为什么算法和数据结构息息相关

在这里插入图片描述

我们创建了一个地皮, 现在有一个需求, 找到名称为 e 的地皮, 正常情况下, 最简单的方式, 那肯定是轮训查找, 一个个去查, 但是这样的效率, 肯定是最低下的, 这现在只有8个还好, 假如有1千万个呢?, 而且你要找的那个还刚好在最后一个, 那不是要循环一千万次,

现在我们升级算法
在这里插入图片描述

正常情况下, 我们走, 轮训查找 正常添加

而现在, 我们在添加的时候, 先在记录本里面记录一下, 它的位置, 找的时候直接拿着位置去找, 就样效率就会大大提升

问题

  1. 记录本里面你还不是要一个个找? 首先这个记录本是系统api支持的, 我们用 e 去找, 能很快的得到 e 的位置, 最终的结构是物理级的, 操作系统还有操作系统自己的数据结构和算法, 记住, 最终是物理级的
  2. 其实上面这个结构, 地皮如果是单排排列, 这就是一个典型的索引系统, 将关键词创建索引, 数组对应hash
  3. 地皮 + 记事本 + 我们添加和查找时候使用的算法, 你也可以称之为函数, 就组成了算法与数据结构

所以有些公司为什么要单独招算法工程师, 算法优化了, 效率能有很大提升

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值