用于对文件进行查找,支持对文件数据内容的搜索.
我用它来查找某一文件被其他文件的引用情况.如游戏中一个纹理文件被哪几个模型文件所使用.
常见数据查找方法:
线性查找
把给定的关键字值与文件中的记录逐个进行比较,直至找到与之匹配的记录为止。若文件中记录数为N,则查找一个记录平均比较次数为(N+1)/2。此法简单,但效率较低。
对分查找
此法要求被查找的文件中记录是按关键字值大小顺序排列的。将文件一分为二,把给定关键字值与中点的记录比较,若匹配,则查找成功;否则判断所要查找的记录可能在上半部分,还是在下半部分。然后,对确定的部分继续上述过程,直至找到要求的记录,查找成功;或最后只剩下一个记录仍不能匹配,查找失败。若文件中记录数为N,则查到一个记录的最多比较次数为log2N。
跳步查找
先用大步跳过一部分记录,再用较小的步长或顺序查找方法在较小的范围内找到要查找的记录。
概率查找
将给定的关键字值按某种公式或算法估算出要查记录的近似位置,然后再用线性查找法确定其准确位置。
随机文件数据查找
对于随机文件,如果是计算寻址结构的文件可以采用直接查找的方法,即利用关键字值和记录位置之间的对应关系直接找到该记录。如果是索引结构的文件,先用上述方法查找索引,在索引中找到相应关键字值后,再由索引表上对应的地址找到相应的记录。不同查找方法的效率很不相同,这主要取决于文件结构和查询问题的特点,查询算法本身也是重要影响因素。