【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)

查找:就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

  • 静态查找表:只作查找操作的查找表。
  • 动态查找表:查找过程中,同时进行插入或删除元素的工作。
为了提高查找的效率,需要转么为查找操作是指数据结构,这种面向查找操作的数据结构成为查找结构。

一、顺序查找表(线性表,不要求元素有序)

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

1、for循环多次比较

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

2、while循环,减少比较次数(i<=n)

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

时间复杂度O(n)

缺点:n很大时朝赵效率极为地下

优点:算法简单,对静态查找表的记录灭有任何要求。

适合:小型数据的查找时适用。


二、有序查找表(要求元素有序)

1、折半查找(二分法查找)

前提:线性表中的记录柏旭是关键码有序(通常从小到大有序),线性表柏旭采用顺序存储。

基本思想:略

时间复杂度:O(logn)。完全二叉树的深度为[logn]+1,远远浩宇顺序查找的O(n)。

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

2、插值查找(对二分查找的改进:mid值进行改进)

插值:

  • 在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。
  • 插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。插值:用来填充图像变换时像素之间的空隙。

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

  • 适用:表长较大,关键字分布比较均匀的查找表。
  • 不适用:分布极端不均匀的查找表。

3、斐波那契查找

二、线性索引查找

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

1、稠密索引

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

2、分块索引

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

3、倒排索引

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

三、二叉排序树

二叉排序树的前提是二叉树。

对二叉排序树进行中序遍历时,得到的就是一个有序的序列。

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

1、二叉排序树的查找(递归)

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

2、二叉排序树插入操作

通过与叶子结点进行比较,然后根据二叉排序树的规则进行插入

3、二叉排序树的删除

三种情况:

1)删除叶子结点–直接删除即可

2)仅有左或右子树的结点:删除结点后,讲它的左子树或右子树整体移动到删除结点的位置即可,可以理解为独子继承父业。

3)左右子树都有结点:—找删除结点的前驱或者后继结点来替换。

二叉排序树总结:

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

四、平衡二叉树(AVL树)

ALV的由来:

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

平衡因子BF:将二叉树的左子树深度减去右子树深度的值。

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

具体细节比较复杂,略。

五、多路查找树

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

1、2-3树

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

2、2-3-4树

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

3、B树

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

六、散列表查找(哈希树)

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

1、散列函数的构造方法

原则:

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

最常用方法:除留余数法

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

        

        如果没有冲突,散列查找是介绍的所有查找中效率最高的,因为时间复杂度为O(1)。但是没有冲突的散列只是一个理想,在实际的应用中冲突是不可避免的。

查找结构总结

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

《【数据结构】查找结构(二叉排序树、ALV树、散列技术哈希表)》

 
    原文作者:二叉查找树
    原文地址: https://blog.csdn.net/love_Aym/article/details/80625786
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞