查找:基本概念

本文探讨了通过使用查找表来优化计算效率的方法。利用预先计算并存储的数据,避免了复杂计算,尤其是在处理如三角函数等耗时操作时效果显著。但同时也指出了查找表可能带来的额外内存消耗及高速缓存问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述:

从内存中提取数值经常要比复杂的计算速度快很多,所以这样得到的速度提升是很显著的。

举个例子:一个经典的例子就是三角表。每次计算所需的正弦值在一些应用中可能会慢得无法忍受,为了避免这种情况,程序可以在刚开始的一段时间计算一定数量的角度的正弦值,然后保存在表中,当需要使用的时候直接从表中查找而不是再重新计算。

另外需要注意的一个问题是,尽管查找表经常效率很高,但是如果所替换的计算相当简单的话就会得不偿失,这不仅仅因为从内存中提取结果需要更多的时间,而且因为它增大了所需的内存并且破坏了高速缓存。如果查找表太大,那么几乎每次访问查找表都会导致高速缓存缺失,这在处理器速度超过内存速度的时候愈发成为一个问题。

基本概念:

  1. 查找表:同一类型的数据元素(记录)构成的集合。
  2. 静态查找表:对查找表只进行查找操作。动态查找表:不仅进行查找操作,而且在查找过程中还伴随着插入(查找的数据元素不在表中时)、删除某个数据元素的操作。
  3. 关键字(key):是数据元素(或记录)的某个数据项的值,用它可标识(识别)一个数据元素(或记录)。
  4. 平均查找长度(ASL):需和给定值进行比较的关键字个数的期望。
    ASL=i=1nPiCi
    n:表中记录个数
    Pi:查找第i个记录的概率
    Ci:找到第i个记录需要进行的对比次数

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值