数据结构中的常用查找
来源:互联网 发布:如何使用遮瑕膏 知乎 编辑:程序博客网 时间:2024/06/05 09:39
查找:静态查找(顺序查找、折半查找、分块查找)+动态查找(二叉排序树、平衡二叉树、B-树查找)
一、静态查找:不改变原结构的顺序。
1、顺序查找
逐个的与关键字进行比较。若找到相等的,则查找成功;反之,失败。
更适合顺序存储结构和链式存储结构的查找表
2、折半查找
给定的序列是一个有序序列。
把序列分成左中右,左<中<右;
把给定值与中间值进行比较,确定下次查找是在左还是右;
继续,知道成功或者失败。
3、分块查找
顺序查找和二分法查找的折中。先分块,在块中顺序查找。
块间有序,块内无序。
二、动态查找
在查找的同时,会改变表的结构。
比如在查找的过程中同时插入查找表中不存在的数据,或者从查找表中删除已经存在的某个数据
1、二叉排序树
左子树非空,则左子树上所有节点值都小于根节点的值;
右子树非空,则右子树上所有节点值都大于根节点的值;
左右子树本身就是两棵二叉排序树。
2、平衡二叉树
或者一棵空树
或者树中任一节点左右子树深度相差不超过1
三、hash表
散列函数:一个把查找表中的关键字映射成该关键字对应的地址的函数。Hash(key)=Addr.
冲突:散列函数可能会把两个或者两个以上的不同关键字映射到同一地址,即为冲突。这些发生碰撞的不同关键字成为同义词。
散列表:根据关键字而直接进行访问的数据结构。
建立了关键字和存储地址之间的直接映射关系。
四、Hash函数:
hash函数的方法:
1、直接地址法
H(key)=a*key+b;
2、除留余数法
H(key)=key%p;
3、数字分析法
冲突解决发方法:
拉链法
开放地址法(线性探测、平方探测、再散列法)
hash表的查找效率取决于三个隐私:散列函数、处理冲突的方法和填装因子
填装因子即为一个表的填装程度,为表中记录数n/散列表长度m。
越大,则发生冲突的可能性越大
- 数据结构中的常用查找
- 数据结构中的查找算法
- 常用查找数据结构及算法
- java中的数据结构--二分查找
- 【数据结构】二维数组中的查找
- QT中的常用数据结构
- 常用数据结构与算法之查找算法
- 常用数据结构_排序_查找练习
- Linux中的常用数据结构详解
- 数据结构中的各种查找---总结篇
- 数据结构中的各种查找---总结篇
- 数据结构中的查找算法-哈希表(3)
- Python编写数据结构中的二分查找
- 数据结构中的查找算法-静态查找表(1)
- 数据结构中的查找算法-动态查找表(2)
- 常用的算法和数据结构分析(查找和排序)
- 常用查找数据结构及算法(Python实现)
- 常用查找数据结构及算法(Python实现)
- 正则表达式之group
- 第四十天 自定义View(时钟)---convas
- 51nod 1191:消灭兔子 贪心+优先队列
- 在Centos6上构建Mesos平台
- 核心动画基础动画(CABasicAnimation)关键帧动画
- 数据结构中的常用查找
- android Spinner控件详解
- 全文检索之中文分词
- 578C. Weakness and Poorness(Codeforces Round #320)
- 证书、描述文件、App ID的解释
- iOS疯狂讲解之复杂对象的归档与反归档
- 欢迎使用CSDN-markdown编辑器
- Filter里面注入Service方法
- Remove Duplicates from Sorted List