数据结构-查找-总结归纳知识点

本文介绍了基于线性表的顺序查找、折半查找和分块查找方法,以及在二叉排序树上的操作,包括删除和查找。同时涵盖了基于哈希的计算式查找和处理冲突的不同策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//第八章 查找
 
//基于线性表的查找

// 1.顺序查找法
//思想:所给的关键字和表中元素的关键字逐个比较
分为:设置监视哨和不设监视哨
监视哨:r[0]防止越界

//2.折半查找法
要求:顺序储存结构(不能链表),按照关键字大小有序排列(正序和逆序)
思想:利用mid=(high+low)/2(整数). 判断条件:low<=high;

//3.分块查找法
要求:列表分为子表,最后一个子表长度可以不满;索引表每个索引对应每个块(子表)的起始位置,记录每个块的最大(最小)
的关键字;索引表按照关键字有序排列


//基于树的查找法

//二叉排序树:元素大小:左子树,根,右子树,递归定义
二叉排序树的删除略显复杂:
1.不存在,不动
2.存在
2.1.叶子节点:直接删,free掉
2.2只有左右子树一支:孩子改到删去位置(孩子变为双亲),free
2.3.左右孩子都有:
2.3.1处理1:
    利用中序遍历算法找到将要删除结点p的直接前驱s,p左子树变为其双亲的左孩子,右子树变为其前驱s的右孩子 
2.3.2处理2: 
    直接删除结点p,p的前驱s代替p,free(s),s的左孩子为s的双亲的右孩子,p的右孩子为s的右孩子
    
//平衡二叉排序树:左子树右子树高度绝对值之差小于等于1
插入算法:LL,RR,LR,RL型

//计算式查找法:hash

//hash:
1.数字分析法:选择合适位数的分布均匀的关键字 
2.平方取中法:求关键字平方值,取中间,重复概率低 
3.分段叠加法:折叠法,移位法
4.除留余数法:取余除数为小于等于表长的最大素数 
5.伪随机数法:
    
处理冲突!:
1.开放地址法(再散列法):
1.1.线性探测再散列:di = 1,2,3......
1.2.二次探测再散列:di = 1^2, -1^2, 2^2, -2^2,...... 
1.3.伪随机探测再散列: ...

2.再哈希法
3.链地址法:
4.建立公共溢出区:分为基本表和溢出表

### Spring Boot 整合 MyBatis 时找不到数据库的原因分析 在 Spring Boot 中整合 MyBatis 并配置数据库连接时,如果遇到无法找到数据库的情况,可能是由于以下几个原因引起的: #### 1. **数据源配置错误** 如果 `application.properties` 或 `application.yml` 文件中的数据源配置项填写错误,则可能导致程序无法正确连接到目标数据库。常见的错误包括但不限于: - 数据库 URL 错误(例如拼写错误或端口号不对)[^2]。 - 用户名或密码错误。 正确的数据源配置应类似于以下形式: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` #### 2. **依赖版本冲突** 如果项目中引入的 MyBatis 和 Spring Boot 的版本不兼容,可能会导致初始化失败或者无法正常加载数据库资源。建议检查项目的 `pom.xml` 文件,确保使用的依赖版本匹配。例如: ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.3.0</version> </dependency> ``` #### 3. **未启用 Mapper 接口扫描** 如果没有正确配置 `@MapperScan` 注解来指定 Mapper 接口所在的包路径,MyBatis 将无法识别这些接口,从而引发异常。可以通过以下方式解决此问题[^3]: ```java @SpringBootApplication @MapperScan("com.example.mapper") // 替换为实际的 mapper 路径 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` #### 4. **数据库服务不可用** 当本地开发环境下的 MySQL 或其他数据库服务未启动时,也会报出类似的 “找不到数据库” 错误。可以尝试通过命令行或其他工具手动测试数据库连通性,确认其状态是否正常运行。 #### 5. **IDEA 缺乏 SQL 提示支持** 若开发者希望获得更友好的编码体验,在 IDEA 上完成相应设置后能够享受智能补全功能带来的便利。具体做法可参照文档说明调整插件选项以便增强用户体验效果[^4]。 --- ### 解决方案总结 针对上述可能存在的各类状况逐一排查即可定位根本所在;同时注意保持各组件间良好的协作关系以减少不必要的麻烦发生几率。 ```java // 示例代码片段展示如何定义一个简单的 DAO 层类 public interface UserMapper extends BaseMapper<UserEntity> {} ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风起风里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值