基本概念
在物理结构中记录排列的先后次序与在逻辑结构中记录排列的先后次序一致的文件称为顺序文件。
记录的排列按关键字值有序的顺序文件称为排序顺序文件,否则,称为一般顺序文件;(该划分是在逻辑上的划分)
在存储介质上采用连续组织方式的顺序文件称为连续顺序文件;采用链接组织方式的顺序文件称为链接顺序文件;(该划分是在物理上的划分)
若排序顺序文件在存储介质上采用连续组织方式,称之为排序连续顺序文件。
连续顺序文件的查找
顺序查找法
基本思想
从文件的第一个记录开始,将用户给出的关键字值与当前被查找记录的关键字值进行比较,若匹配,则查找成功,给出被查到的记录在文件中的位置,查找结束。若所有 n 个记录的关键字值都已比较,不存在与用户要查的关键字值匹配的记录,则查找失败,给出信息 0。
非递归算法 C 语言实现
int SEQSEARCH1(keytype key[], int n, keytype k) {
int i;
for(i=1; i<=n; i++) // 位置从 1 开始
if(key[i]==k) return i;
return 0;
}
递归算法 C 语言实现
int SEQSEARCH2(keytype key[], int n, keytype k, int i) {
if(i>n) return 0;
if(key[i]==k) return i;
return SEQSEARCH2(key,n,k,i+1);
}
// 该函数调用方式如下:
// int pos = SEQSEARCH2(key,n,k,1); // 从 1 开始
查找效率
平均查找长度 ASL:确定一个记录在文件中的位置所需要进行的关键字值的比较次数的期望值 (平均值)。
对于具有 n 个记录的文件,有







