顺序查找

顺序查找

  1. 算法思想
  2. 算法实现
  3. 算法优化

顺序查找的算法思想

顺序查找,又叫“线性查找”,通常用于线性表

从头到尾查

顺序查找的实现

typedef struct{ //查找表的数据结构(顺序表)
ElemType *elem; //动态数组的基址
int TableLen; //表的长度
}SSTable;
//顺序查找
int Serach_Seq(SSTable ST,ElemType key){
int ;
for(i=0;i<ST.TableLen && ST.elem[i] != key;++i);
//查找成功,则返回元素下标;查找失败,则返回-1
return i == ST.TableLen ? -1 : i;
}

顺序查找的实现(哨兵)

typedef struct{
ElemType *elem;
int TableLen;
}
//顺序查找
int Search_Seq(SSTable ST,ElemType key){
ST.elem[0] = key; //哨兵
int i;
for(i=ST.TableLen;ST.elem[i]!=key;--i);
return i;
}

优点:无需判断是否越界,效率更高。

查找效率分析

顺序查找的优化(对有序表)

共有n+1种查找失败的情况

ASL=1+2+3+...+n+nn+1=n2+nn+1

用查找判定树分析ASL

顺序查找的优化(被查概率不相等)

把被查找概率大的放在前面。

知识回顾

{{uploading-image-757343.png(uploading...)}}

本文作者:Jev_0987

本文链接:https://www.cnblogs.com/jev-0987/p/13307719.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Jev_0987  阅读(436)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起