数据结构之查找一静态查找
来源:互联网 发布:2016双十一淘宝退货率 编辑:程序博客网 时间:2024/05/22 09:07
数据结构之查找一静态查找
今天将数据结构的查找章节的知识点总结一下,以前在课堂上没有好好听,所以现在不得不将这些基础拿出来再预习—学习—复习,哎,苦逼的程序媛。。。。。
下面进入正题。
在非数值运算问题上,数据存数量一般很大,为了在大量数据中找到某些值,需要用到查找技术,为了提高查找效率,需要对一些数据进行排序。查找和排序的数据处理量几乎占到总处理量的80%以上,所以查找和排序的有效性直接影响到基本算法的有效性,因而查找和排序时很重要的处理技术。
对于表的查找,有两种情况:
一种是静态查找:在查找过程中,只是对数据元素进行查找;
一种是动态查找:在查找的同时,插入找不到的元素,或从查找表中删除已经查到的某个元素,即允许表中的元素变化。
查找的基本方法可以分为两类:比较式查找和计算式查找
比较式查找又分为:基于线性表的查找和基于树的查找
计算式查找又称为哈希查找
基于线性表的查找具体又可以分为:顺序查找、折半查找和分块查找
顺序查找的特点是:用所给关键字与线性表中的每个元素逐个进行比较(此时的比较是从列表中最后一个元素开始的,逐一往前找,此时哨兵为r[0],循环条件从1开始到n;当然,循环条件也可以逆序,此时的哨兵则为r[n+1])。注:设置哨兵位,是为了防止下标越界。
存储结构通常为顺序结构,也称为链式结构。
该方法的平均查找长度为:ASL=(n+1)/2
折半查找:又称为二分查找法,对于待查找的列表有两个要求:
1、必须采用顺序存储结构
2、必须按照关键大小有序排列
该方法的平均查找长度为:ASL=log2(n+1) -1
特点是:
优点:比较次数少,查找速度快,平均性能好
缺点:要求对于待查表为有序表,且插入和删除比较困难
该方法的适用情况:适用于不经常变动而查找频繁的有序列表
折半查找可以用二叉判定树来表示:
此时的平均查找长度是:ASL=每个结点的层次数之和 / 结点总数
分块查找:
思想:将列表分为若干个块(子表),块的长度均匀,每块中元素任意排列,快内无序,块间有序。构造一个索引表,其中每一个索引项对应一个块(块内的最大关键字)并记录每块的起始位置,以及每块中的最大关键字(或者最小关键字),索引表按关键字有序排列
该方法的平均查找长度是由两部分组成的,即查找索引表时的平均查找长度为L1,与在相应块内进行顺序查找的平均查找长度为L2,则有
ASL=L1+L2
若用顺序查找法确定待查元素所在的块,则有:
ASL=L1+L2=(b+s)/ 2 +1(注:b:表分的块数,s:块内的元素数)
若用折半查找法确定待查元素所在的块,则有:
ASL=log2(n/s + 1) +s/2(注:n:表的长度)
- 数据结构之查找一静态查找
- 数据结构之查找一静态查找
- 数据结构之查找<一>
- 数据结构之“查找”-1:静态查找表
- 【数据结构】静态查找之顺序查找
- 【数据结构】静态查找之二分查找
- 【数据结构】静态查找之分块查找
- 数据结构(21)--查找之静态查找表
- 初学数据结构---查找代码之静态查找
- 数据结构之静态查找表
- 查找之静态查找
- 数据结构 查找 静态查找表
- 数据结构 静态查找
- 【数据结构】静态查找_Search
- 数据结构 - 静态查找
- 数据结构:静态查找表
- 查找之静态查找表
- 【数据结构与算法之查找算法一】顺序查找
- Android TextView 个别文字字体颜色格式
- [STL]标准容器
- Broadcom网卡设置影响HyperV虚拟机网络性能
- 传智播客数据绑定和数据库开发基础(第四季)
- Codeforces dp第一弹
- 数据结构之查找一静态查找
- ndk 编译 c++ 兼容性问题汇总整理
- TIPTOP GP5.1excel 数据访问
- 关于多线程并发的小实验
- Vim常用命令大全
- Oracle的数据类型转换 to_char(date)
- 长这么大 犯的最大的错误
- Ubuntu下搭建FTP服务器
- NoSQL数据库的分布式算法