| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【数据结构】查找:顺序查找、折半查找、二叉排序树、平衡二叉树、B树、哈希查找 -> 正文阅读 |
|
[数据结构与算法]【数据结构】查找:顺序查找、折半查找、二叉排序树、平衡二叉树、B树、哈希查找 |
整理内容来源:zzu信息工程学院数据结构ppt 1 查找的基本概念静态查找:
动态查找:
2 基于线性表的查找2.1 定义和分类
注意区分 “有序” 和 “顺序”:有序表中的“有序”是逻辑意义上的有序,指表中的元素按某种规则已经排好了位置。顺序表中的“顺序”是物理意义上的,指线形表中的元素一个接一个的存储在一片相邻的存储区域中。可以粗略地将“顺序表”理解为数组,将“有序表”理解为排好的数组。 2.2 顺序查找2.2.1 思想从表中第一条/最后一条记录开始,逐个进行记录的关键字与给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功,返回其在顺序表中的位序;反之,若直至最后一条/第一条记录其关键字和给定值比较都不等,则查找不成功,返回 2.2.2 算法实现监视哨:为能自动检验数组下标越界,在
举例: 2.2.3 性能分析这么暴力的做法时间复杂度当然不会低了 2.3 折半查找折半查找在算法题中用的很多了,我之前专门写过关于折半查找的博客:算法 - 二分查找 2.3.1 定义折半查找(二分查找):先确定待查记录所在范围,逐步缩小范围,直到找到或找不到该记录止。 2.3.2 判定树2.3.3 性能分析时间复杂度为 2.4 索引顺序表索引顺序表就不展开讲了,它的特点是:分块有序、块内无序。
3 二叉排序树(二叉查找树、BST)3.1 定义二叉排序树是指空树或具有下列性质的二叉树:(不得不感慨课件确实很严谨)
可以看出,这是一种递归式定义。 3.2 查找过程
关于二叉排序树的算法实现,我们选用的存储结构是链式存储结构,即
3.2 插入、构造方法
其实对查找算法就是修改了如果查找不成功的话,对这个叶子结点进行了记录。(利用&p) ----------------------(乱入,前面的内容push一下)---------------- 如果得到了叶子结点,那我们就可以进行二叉排序树的插入操作了:
插入的示例和补充: 3.3 删除对于一般的二叉树,删去树中的一个结点会破坏整棵树的结构。对二叉排序树,删去一个结点相当于删去有序序列中的一个记录。
3.4 性能分析在等概率情况下,完全二叉树的查找效率最高。在随机的情况下,二叉排序树的平均查找长度和 4 平衡二叉树(AVL树)4.1 定义平衡二叉树(
害,怎么说呢,又是一个递归定义。( 4.2 构造
4.3 性能分析和BST树一样,性能是O(log2n) 5 B-、B+树5.1 B-树的定义
定义还有一个小要求: 5.2 引入B-树的原因前面介绍的查找方法适用于待查记录数较小的文件,查找时记录都读入内存中进行处理,统称为内查找法。若文件很大,查找时不能把记录全部读入内存(大量数据仍存放在硬盘上)时,则查找过程需要反复进行内、外存交换。 5.3 B-树的查找过程
在结点内进行查找一般是顺序查找或折半查找,而沿指针搜索结点的过程如下:
5.4 B-树的查找分析在磁盘上进行一次查找比在内存中进行一次查找耗时多很多,因此B-树的查找效率主要取决于访问外设的次数,即:取决于待查关键字所在结点在B-树上的层次数。 5.5 B+树
这个定义应该不难理解。 5.6 B+树的查找
6 哈希查找这个我就不写了,之前写过一篇。可以参考文章:【数据结构】【哈希】哈希表的概念和算法实现 7 总结最后呢,总结一下查找的时间复杂度:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 3:53:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |