查找算法:顺序查找

顺序查找

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很大时,不宜采用顺序查找

posted @ 2021-06-21 14:33  aguo718  阅读(155)  评论(0编辑  收藏  举报