数据结构与算法 基础概念

数据结构:存储数据的不同的方式。
1数据每个格占用空间一样大,格子挨在一起 叫数组
插入新值:
如果要在一个数组中插入一个值,那就比较难,因为格子是没有空隙的。那怎么办呢,1.需要重新分配一个新单元格,比原来的要大,然后复制前后的数据,这个空间正好能装入要加入的值。
查询某个值:
根据单元格的所占大小(计算偏移量),可以直接就能定位到要找的数据

2每个格子里存着数据,还存着指向下一个小格子的指针,像一个链条,这样的方式叫做链表
插入新值:
如果有一个链表,需要在中间插一个新值,需要将原有的链条打断,然后和新值关联。这个就比较容易
等等
查询某个值:
必须通过链条一个一个往后找

算法:同一个问题的不同解决方法。

如何知道算法的优劣
时间测算
计算算法时间差 (可以在代码前后计算时间)
幅度不够循环来凑, (可以将这个代码循环10万次看时间)
空间测算

时间复杂度
大O标记法,大O就是来标识时间复杂度的,计算机执行的时间随着问题规模的扩大,时间变化的规律。
举例:
比如数组查第4个数组和查第40万的数组,他们都只是需要计算一下偏移量,规模扩大对其没有影响,都是固定的一个值,是个常数,那用
O(1)来表示
再比如 访问链表的第4个值和查第最后一个值(算时间复杂度,都是要考虑最差的情况)读一个是1s那读4个就需要4s
O(n) 线性扩大 一般会忽略常数项比如O(2n) 忽略成O(n)
求数组的平均数,时间复杂度是O(n) 因为需要把所有值加起来

两遍循环就是n的平方
三遍循环那就是n的立方
空间复杂度
随着问题规模的扩大,空间的变化规律

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mr.杰瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值