顺序查找
Posted jev-0987
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序查找相关的知识,希望对你有一定的参考价值。
顺序查找
- 算法思想
- 算法实现
- 算法优化
顺序查找的算法思想
顺序查找,又叫“线性查找”,通常用于线性表
从头到尾查
顺序查找的实现
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_{失败} = frac{1+2+3+...+n+n}{n+1} = frac{n}{2}+frac{n}{n+1}
]
用查找判定树分析ASL
顺序查找的优化(被查概率不相等)
把被查找概率大的放在前面。
知识回顾
{{uploading-image-757343.png(uploading...)}}
以上是关于顺序查找的主要内容,如果未能解决你的问题,请参考以下文章
html 将以编程方式附加外部脚本文件的javascript代码片段,并按顺序排列。用于响应式网站,其中ma