知识大全 查找-线性表的查找-顺序查找
Posted 结点
篇首语:满堂花醉三千客,一剑霜寒十四洲。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 查找-线性表的查找-顺序查找相关的知识,希望对你有一定的参考价值。
顺序查找(Sequential Search)
在表的组织方式中 线性表是最简单的一种 顺序查找是一种最简单的查找方法
顺序查找的基本思想
基本思想是 从表的一端开始 顺序扫描线性表 依次将扫描到的结点关键宇和给定值K相比较 若当前扫描到的结点关键字与
K相等 则查找成功;若扫描结束后 仍未找到关键字等于K的结点 则查找失败
顺序查找的存储结构要求
顺序查找方法既适用于线性表的顺序存储结构 也适用于线性表的链式存储结构(使用单链表作存储结构时 扫描必须从第一个
结点开始)
基于顺序结构的顺序查找算法
( )类型说明
typedef struct
KeyType key;
InfoType otherinfo; //此类型依赖于应用
NodeType;
typedef NodeType SeqList[n+ ]; // 号单元用作哨兵
( )具体算法
int SeqSearch(Seqlist R KeyType K)
//在顺序表R[ n]中顺序查找关键字为K的结点
//成功时返回找到的结点位置 失败时返回
int i;
R[ ] key=K; //设置哨兵
for(i=n;R[i] key!=K;i ); //从表后往前找
return i; //若i为 表示查找失败 否则R[i]是要找的结点
//SeqSearch
注意
监视哨设在高端的顺序查找【参见练习】
( )算法分析
① 算法中监视哨R[ ]的作用
为了在for循环中省去判定防止下标越界的条件i≥ 从而节省比较的时间
②成功时的顺序查找的平均查找长度
>
在等概率情况下 p i = /n( ≤i≤n) 故成功的平均查找长度为
(n+…+ + )/n=(n+ )/
即查找成功时的平均比较次数约为表长的一半
若K值不在表中 则须进行n+ 次比较之后才能确定查找失败
③表中各结点的查找概率并不相等的ASL
【例】在由全校学生的病历档案组成的线性表中 体弱多病同学的病历的查找概率必然高于健康同学的病历 由于上式的ASL sq
在p n ≥p n ≥…≥p ≥p 时达到最小值
若事先知道表中各结点的查找概率不相等和它们的分布情况 则应将表中结点按查找概率由小到大地存放 以便提高顺序查找的效率
为了提高查找效率 对算法SeqSearch做如下修改 每当查找成功 就将找到的结点和其后继(若存在)结点交换 这样 使得查
找概率大的结点在查找过程中不断往后移 便于在以后的查找中减少比较次数
④顺序查找的优点
算法简单 且对表的结构无任何要求 无论是用向量还是用链表来存放结点 也无论结点之间是否按关键字有序 它都同样适用
⑤顺序查找的缺点
查找效率低 因此 当n较大时不宜采用顺序查找
cha138/Article/program/sjjg/201311/23867相关参考
线性表上进行查找的方法主要有三种顺序查找二分查找和分块查找 顺序查找(SequentialSearch)算法基本思想是从表的一端开始顺序扫描线性表依次将扫描到的结点关键字与给定值K相比较若当前扫
二分查找 二分查找(BinarySearch) 二分查找又称折半查找它是一种效率较高的查找方法 二分查找要求线性表是有序表即表中结点按关键字有序并且要用向量作为表的存储结构不妨设有序表是递增
二分查找判定树 二分查找过程可用二叉树来描述把当前查找区间的中间位置上的结点作为根左子表和右子表中的结点分别作为根的左子树和 右子树由此得到的二叉树称为描述二分查找的判定树(DecisionT
单链表的查找运算 ()按序号查找 ①链表不是随机存取结构 在链表中即使知道被访问结点的序号i也不能像顺序表中那样直接按序号i访问结点而只能从链表的头指针出发顺链域 next逐个结点往下搜索
当用线性表作为表的组织形式时可以有三种查找法其中以二分查找效率最高但由于二分查找要求表中结点按关键字有序且不能用链表作存储结构因此当表的插入或删除操作频繁时为维护表的有序性势必要移动表中很多结点这
单链表的查找运算()按序号查找①链表不是随机存取结构 在链表中即使知道被访问结点的序号i也不能像顺序表中那样直接按序号i访问结点而只能从链表的头指针出发顺链域nex
初始条件线性表L存在 操作结果在表L中查找值为x的数据元素其结果返回在L中首次出现的值为x的那个元素的序号或地址称为查找成功;否则在L中未找到值为x的数据元素返回一特殊值表示查找失败 ⑸插入操
二分查找又称为折半查找(BinarySearch)它要求线性表中结点必须按关键字值递增或递减顺序排列 二分查找的基本思想首先用要查找的关键
本章介绍了线性表树和散列表的查找方法算法实现以及各种查找方法的时间性能分析重点是顺序查找二分查找二叉树查找以及散列表上查找的基本思想和算法实现 一基本概念(识记) 查找的同时对表做修改操作(如
()按值查找 单链表的按值查找是在线性表存在的情况下查找值为x的数据元素若成功返回首次出现的值为x的那个元素所在结点的指针;否则未找到值为x的数据元素返回NULL表示查找失败 算法思路从链表的