数据结构与算法基础
查找
-
查找表是由同一类型的数据元素(或记录)构成的集合。由于“集合”中的元素之间存在着松散的关系,因此查找表是一种用用灵便的结构。
-
查找:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或(记录)。
-
关键字:用来标识一个数据元素(或记录)的某个数据项的值。
- 主关键字:可唯一地表示一个记录的关键字是主关键字;
- 次关键字:反之,用识别若干记录的关键字是次关键字。
-
查找表可以分为两类
-
静态查找表
仅作查询
-
动态查找表
可以作插入和删除
-
-
查找算法的评价指标:
- 关键字的平均比较次数,也称平均查找长度ASL
线性表的查找
顺序查找(线性查找)
-
顺序表或线性链表表示的静态查找表
-
表内元素之间无序
算法:
-
在顺序表中查找值为key的数据元素(从最后一个元素开始比较)
-
int Search_Seq(SSTable ST,KeyType key) { for(i = ST.length;i>=1;--i) { if(ST.R[i].key==key) { return i; } } return 0; }
-
其他形式:
int Search_Seq(SSTable ST,KeyType key) { for(i = ST.length;ST.R[i].key!=key;--i) { if(i<=0) { break; } } if(i>0) { return 0; } else return 0; }
改进
- 把待查关键字key存入表头(“哨兵”“监视哨”),从后往前进行比较,可以面区查找过程重每一步都要检测是否查找完毕,加快速度。