用于對文件進(jìn)行查找,支持對文件數(shù)據(jù)內(nèi)容的搜索.
我用它來查找某一文件被其他文件的引用情況.如游戲中一個紋理文件被哪幾個模型文件所使用.
常見數(shù)據(jù)查找方法:
線性查找
把給定的關(guān)鍵字值與文件中的記錄逐個進(jìn)行比較,直至找到與之匹配的記錄為止。若文件中記錄數(shù)為N,則查找一個記錄平均比較次數(shù)為(N+1)/2。此法簡單,但效率較低。
對分查找
此法要求被查找的文件中記錄是按關(guān)鍵字值大小順序排列的。將文件一分為二,把給定關(guān)鍵字值與中點的記錄比較,若匹配,則查找成功;否則判斷所要查找的記錄可能在上半部分,還是在下半部分。然后,對確定的部分繼續(xù)上述過程,直至找到要求的記錄,查找成功;或最后只剩下一個記錄仍不能匹配,查找失敗。若文件中記錄數(shù)為N,則查到一個記錄的最多比較次數(shù)為log2N。
跳步查找
先用大步跳過一部分記錄,再用較小的步長或順序查找方法在較小的范圍內(nèi)找到要查找的記錄。
概率查找
將給定的關(guān)鍵字值按某種公式或算法估算出要查記錄的近似位置,然后再用線性查找法確定其準(zhǔn)確位置。
隨機(jī)文件數(shù)據(jù)查找
對于隨機(jī)文件,如果是計算尋址結(jié)構(gòu)的文件可以采用直接查找的方法,即利用關(guān)鍵字值和記錄位置之間的對應(yīng)關(guān)系直接找到該記錄。如果是索引結(jié)構(gòu)的文件,先用上述方法查找索引,在索引中找到相應(yīng)關(guān)鍵字值后,再由索引表上對應(yīng)的地址找到相應(yīng)的記錄。不同查找方法的效率很不相同,這主要取決于文件結(jié)構(gòu)和查詢問題的特點,查詢算法本身也是重要影響因素。