1.查找算法的四个特征:
内外有别:分为内查找和外查找
静态动态: 静态查找时,表的内容不变;动态查找时,表的内容不断地变化。
原词变词: 原词系指用原来的关键词,变词系指使用经过变换的关键词。
数字文字: 指进行比较的时候,是否用数字的性质(或者类似于数字的性质进行分布排序)。
2.顺序查找
2.1无序表的顺序查找
从起点开始顺着往下查,一直找到相同的关键词为止。(或者查找失败
算法1:
for (int i = 0; i < n;i++)
{
if(K==kI)
{
find it;
}
else if(i==n-1)
{
fail;
}
}
算法2:对于算法 1的改进
int i = -1;
while()
{
i = i + 2;
if(k[i]==k)
{
if(i<=N)
find it;
else
{
not find;
}
}
if(k[i+1]!=k)
{
}
else
{
res = i + 1;
if (i <= N)
find it;
else
{
not find;
}
}
}
加速原理:
当算法的一个内循环要测试两个或多个条件时,应力图将其减少成一个条件。
2.2自组织表
显而易见,平均查找长度与查找各元素的概率是相关的,把经常出现的元素(查找的概率较大)自动向表的前端移动(MOVE-TO-FRONT),把不经常出现的元素自动向表的后端移动。
2.3排序与查找
2.3.1在我们进行多次查找时,先将文件排序再进行查找是一个快速的查找方法。但如果仅仅进行一次查找,进行排序则会消耗很多时间。
2.3.2由此,我们进入下一章节来考虑排序后的有序表如何进行数据的查找。