在算法或数据结构里面,都有哪些地方会用到“懒”操作?

聊到"懒"这个话题,想想看,我们人类在偷懒的时候,不都是看哪些事情能拖就拖嘛?

计算机世界里的"懒"操作也是这个道理 —— 能晚点做的事情,就不要现在做

举几个有意思的例子:

1️⃣ 线段树的懒标记 - 拖延症患者的福音

想象你是个送快递的,要给一个小区的100户人家都送一个限量版泡面。但突然公司通知说:"这批泡面保质期延长了,得在包装上贴个标签。"

你会怎么做?

老实人做法:挨个上门,一户一户贴标签
聪明人做法:先在门口记一笔账"这一片的都得贴",等真有人来取快递了再贴

线段树的懒标记就是第二种做法。与其立刻更新一大片节点,不如先记个账,等真需要用到某个节点的时候再更新。这就是传说中的"躺平式更新" ️

2️⃣ Python的生成器 - 按需生产才是真的懒

有没有想过为什么要生成斐波那契数列的前1000000项,Python的生成器却秒回?

def fib():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b 

秘诀就在于它采用了"懒"计算策略:不会一次性把所有数都算出来,而是等你要用到哪个数才临时计算。这就像你妈叫你买菜,你不会一次性把未来一年的菜都买回来,而是按需采购。这就是"即用即算"思想

3️⃣ 垃圾回收的懒删除 - 删除也要讲究战略

删东西最烦人了对不对?特别是当你的房间乱成狗窝的时候。

计算机也一样,频繁地删除对象很费时间。所以就有了"懒"删除:与其立刻删除,不如先打个标记"这玩意儿该扔了",等内存不够用了再统一清理。这就像我们整理房间:不是天天打扫,而是等到实在没地方放东西了才大扫除。这就是"囤积式清理"

4️⃣ 虚拟内存的懒加载 - 眼不见心不烦

现代操作系统都用到了虚拟内存,但它也很"懒":

不会一次性把程序所需的所有数据都加载到内存,而是等程序真正要访问某块数据时才去加载

这就是传说中的"需要才搬家"策略


至于你说的效果如何?

这些"懒"操作的效果自然是好的:

  1. 省时间 - 避免了很多不必要的操作
  2. 省空间 - 按需分配资源,不浪费
  3. 响应快 - 重活儿都推迟了,自然轻装上阵

有没有觉得这些"懒"操作其实挺机智的? 我是旷野,探索无尽技术!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值