【数据结构】静态查找之顺序查找
2015-10-16 10:52
344 查看
【思想】
从表的最后一个数据元素位置开始,从后往前依次将各个位置上的数据元素的键值与给定值比较。若某个位置上的数据元素的键值与给定值相等,则查找成功,并返回该位置作为结果;反之,若查找至第一个元素,所有数据元素的键值均与给定值不等,则查找不成功。
【ASL】
ASL指的是平均查找长度,是指为找到数据元素在查找表中的位置,与给定值进行比较的键值个数的期望值。
1、在等概率查找的情况下,顺序表查找成功的平均查找长度为
ASL=∑PiCi=(n+1)/2,(i=1,2,...n),
(其中n为表长,Pi为查找表中第i个元素的概率∑PiCi=1,Ci为找到该元素时,曾和给定值比较过的关键字的次数)
2、若给定值key不在表中,则需要(n+1)次查找比较,才可确定查找失败。
【时间复杂度】
时间复杂度为O(n)
【优缺点】
(1)优点:①算法简单②适用性广泛(对表的结构无任何要求)
(2)缺点:查找效率低
【算法描述】
注:上例是从后往前找,所以i初值为顺序表表长。若从前往后找,则i初值为0.
相关博客链接:
静态查找之二分查找
静态查找之分块查找
从表的最后一个数据元素位置开始,从后往前依次将各个位置上的数据元素的键值与给定值比较。若某个位置上的数据元素的键值与给定值相等,则查找成功,并返回该位置作为结果;反之,若查找至第一个元素,所有数据元素的键值均与给定值不等,则查找不成功。
【ASL】
ASL指的是平均查找长度,是指为找到数据元素在查找表中的位置,与给定值进行比较的键值个数的期望值。
1、在等概率查找的情况下,顺序表查找成功的平均查找长度为
ASL=∑PiCi=(n+1)/2,(i=1,2,...n),
(其中n为表长,Pi为查找表中第i个元素的概率∑PiCi=1,Ci为找到该元素时,曾和给定值比较过的关键字的次数)
2、若给定值key不在表中,则需要(n+1)次查找比较,才可确定查找失败。
【时间复杂度】
时间复杂度为O(n)
【优缺点】
(1)优点:①算法简单②适用性广泛(对表的结构无任何要求)
(2)缺点:查找效率低
【算法描述】
int SearchSqTable (SqTable T,KeyType key) { T.elem[0].key=key; //设置岗哨 i=T.n //设置比较位置初值 while(T.elem[i].key !=key) i--; //未找到时,修改比较位置继续查找 return i; //若找到,则返回当前位置 }
注:上例是从后往前找,所以i初值为顺序表表长。若从前往后找,则i初值为0.
相关博客链接:
静态查找之二分查找
静态查找之分块查找
相关文章推荐
- *第七周*数据结构实践项目三【负数把整数赶出队列】
- 第六周 数据结构实践项目——栈【项目1 - 建立顺序栈算法库】
- 第6周SHH数据结构—【项目4-数制转换】
- 第6周SHH数据结构—【项目3-括号的匹配 】
- 2015-10-16 【项目2 - 建立链队算法库】
- 第八周 串 项目2 -- 建立链串的算法库
- 2015-10-16 【项目1 - 建立顺序环形队列算法库】
- 2015-10-16 【项目5 - 后缀表达式】
- 项目5 排队看病模拟
- 2015-10-16 【项目4 - 数制转换】
- 数据结构实践——排队看病模拟
- 数据结构实践——队列数组
- 数据结构之 击鼓传花
- pta-数据结构与算法题目集(中文)--4-4 链式表的按序号查找
- 数据结构之排序算法
- 数据结构与算法分析:栈与队列
- 如果业界中不用高级算法和数据结构,那为什么还要学?
- 数据结构 动态可调数组 顺序栈
- 数据结构基础3:队列
- 数据结构-顺序线性表基本操作实现