根据数据量的大小,我们可将查找分为内部查找和外部查找。
- 内部查找:数据量小的文件可以一次性全部加载到内存中进行查找。
- 外部查找:数据量大的文件无法一次性加载到内存中处理,而需要使用辅助存储器来分次处理
如果从另外一个角度来看,查找的技巧又可分为“静态查找”和“动态查找”两种。
- 静态查找:在查找过程中,查找的表格或文件的内容不会被改动,例如符号表示的查找就是一种静态查找。
- 动态查找:在查找过程中,查找的表格或文件的内容可能会被改动,例如在树状结构中所谈的B-Tree查找就是一种动态查找。
查找技巧比较常见的方法有顺序法、二分查找法、斐波拉契法、插值法、哈希法等
一、顺序查找法(线性查找法)
顺序查找法是将数据一项一项地按顺序逐个查找,无论数据的顺序怎么样,都是从头到尾遍历一次。此方法的优点是文件在查找前不需要进行任何处理与排序,缺点是查找速度比较慢。时间复杂度为O(n)。
import random
data=[0]*80
for i in range(80):
data[i]=random.randint(1,150)
def order_Search(val):
find=0
for i in range(80):
if data[i]==val:
print('在第%d个位置找到键值[%d]'%(i+1,data[i]))
find=1
if find==0:
print('没有找到')