查找算法:顺序查找
顺序查找
int Search_seq(SSTable ST, KeyType key) {
for(int ST.length; i>=1; i++) {
if (ST[i].key == key) return i;
}
return 0;
}
在以上查找过程中, 每一步都要检测整个表是否查找完毕,即每步都要判断i<ST.length条件是否满足
改进方法是查找之前先对ST[0].key赋值为待查找的key,ST[0]起到 监视哨的作用
int Search_seq(SSTable ST, KeyType key) {
ST[0].key = key;
int index = ST.length;
while(ST[index] != ST[0].key) {
index--;
}
return index;
}
算法分析
时间复杂度:平均查找长度 ASL=\(\frac{1}{n}\sum^{n}_{i=1}{i}\)=\(\frac{n+1}{2}\)
优点:1)数据可以无序,2)可顺序存储,也可链式存储
缺点:平均查找长度较大,查找效率较大,所以当n很大时,不宜采用顺序查找