- 博客(28)
- 收藏
- 关注
原创 数据结构——排序(一、什么是排序)
摘要:排序算法的稳定性指关键字相同的元素在排序前后相对位置不变,但稳定性并非衡量算法优劣的标准。根据数据存储位置可分为内部排序(关注时间/空间复杂度)和外部排序(关注磁盘读写)。大多数内部排序基于比较操作,但基数排序例外。对于无重复关键字的排序,算法稳定性无关紧要。不稳定的排序算法可通过实例验证其不稳定性。
2025-08-07 01:03:01
116
原创 数据结构——查找(三、树形查找)
本文系统介绍了二叉排序树(BST)和平衡二叉树(AVL)的基本概念与操作。二叉排序树通过左小右大的特性实现高效查找(平均O(logn)),详细讲解了查找、插入、删除的递归/非递归实现,并分析了不同输入序列对树结构的影响。平衡二叉树通过平衡因子保证树高平衡,重点阐述了LL/RR/LR/RL四种旋转调整策略,以及插入删除后的平衡维护方法。文章通过代码示例展示了BST的完整实现,包括创建、遍历和节点操作,为理解和应用这两种重要数据结构提供了全面指导。
2025-08-04 01:59:48
764
原创 数据结构——查找(二、顺序查找、折半查找和分块查找)
顺序查找也称线性查找,对线性表和链表都适用。顺序查找分为一般的无序线性表的顺序查找和对按关键字有序的线性表的顺序查找(判定树)对链表只能进行顺序查找顺序查找都可以使用链表和顺序表,都可以有序或无序。
2025-08-02 00:18:33
848
原创 数据结构——查找(一、什么是查找?)
查找是在数据集合中寻找特定元素的过程,分为静态查找表(仅查询)和动态查找表(支持增删)。查找表可以是线性表、链表等数据结构,查找方法包括顺序查找、折半查找和散列查找等。关键字是唯一标识数据元素的项(如学号),平均查找长度(ASL)衡量查找效率,计算比较次数的平均值。查找结果分为成功与失败,动态查找还需考虑插入删除速度。
2025-08-01 21:39:30
266
原创 C++ 在结构体中重载运算符
摘要:本文介绍了在C++中重载运算符的必要性及实现方法。对于基本数据类型(如int、float),编译器已内置比较运算符;但自定义结构体(如Edge)需手动重载运算符才能使用比较操作。重点讲解了通过结构体内定义operator<来比较成员变量w的方法,并说明sort()函数如何利用重载的<运算符进行排序。文章还展示了完整的运算符重载示例代码,包括Edge结构体的实现和排序应用,并介绍了其他运算符(如+)的重载语法形式。运算符重载使自定义类型能像基本类型一样使用标准运算符,提高了代码的可读性和灵活
2025-07-29 16:58:52
674
原创 数据结构——图(三、图的 广度/深度 优先搜索)
文章摘要:本文介绍了图的两种基本遍历算法——广度优先搜索(BFS)和深度优先搜索(DFS)。BFS使用队列辅助实现,具有O(|V|)空间复杂度,邻接表存储时时间复杂度为O(|V|+|E|),邻接矩阵为O(|V|²)。DFS采用递归实现,空间复杂度为O(1)到O(|V|),时间复杂度与BFS相同。文章还分析了图的连通性:无向图连通时一次遍历可访问所有顶点,非连通时遍历次数等于连通分量数;有向图需考虑路径可达性,非强连通分量一次遍历不一定能访问所有顶点。两种算法的时间复杂度均取决于图的存储结构。
2025-07-29 00:41:50
608
原创 图——邻接表基本操作算法实现
本文介绍了基于邻接表的图数据结构实现,主要包含以下内容:1)采用结构体定义顶点和边结点,构建邻接表存储结构;2)实现图的初始化、顶点/边插入删除等基本操作;3)提供查找顶点位置、输出邻接表等功能;4)支持有向图和无向图两种类型,通过示例演示了创建图、添加边、删除顶点等操作。文章详细给出了各操作的C语言实现代码,并通过主函数测试验证了功能的正确性。
2025-07-28 22:46:12
506
原创 数据结构——图(二、图的存储和基本操作)
本文介绍了图的四种存储结构:邻接矩阵、邻接表、十字链表和邻接多重表。邻接矩阵通过二维数组存储边信息,空间复杂度O(|V|²),适合稠密图;邻接表采用链式存储,空间复杂度O(|V|+|E|),适合稀疏图。十字链表和邻接多重表分别优化了有向图和无向图的存储。文章详细分析了各结构的特点、存储实现及基本操作(如增删顶点/边、查找邻接点等)的时间复杂度,并对比了四种方式的适用场景和优缺点,为图算法的存储选择提供了参考依据。
2025-07-28 14:53:07
1492
原创 图——邻接矩阵基本操作算法实现
图——邻接矩阵基本操作算法实现Adjacent(G,x,y) 判断图是否存在边<x,y>或(x,y)Neighbors(G,x) 列出图中域结点x邻接的边InsertVertex(G,x) 在图中插入顶点xDeleteVertex(G,c) 在图中删除顶点xAddEdge(G,x,y) 若无向边(x,y)或有向边<x,y>不存在,则向图G中添加该边RemoveEdge(G,x,y) 若无向边(x,y)或有向边<x,y>存在,则从图G中删除该边FirstNeighbor(G,x) 求图中顶点x的
2025-07-28 02:28:59
236
原创 数据结构——图(一、图的定义)
摘要:图是由顶点集V和边集E构成的非空结构(V≠∅)。根据边是否有方向分为有向图和无向图,其中无向图的边无序,有向图的边有序(弧)。顶点度数为关联边数,有向图还区分入度和出度。路径指顶点序列,回路是首尾相同的路径。连通图要求任意两点可达,强连通图要求双向可达。生成树是含全部顶点的极小连通子图(n个顶点n-1条边)。带权图称为网,完全图中任意两点间均有边(无向完全图有n(n-1)/2条边)。关键性质包括:n顶点图边数>n-1必有环,树必有n-1条边,强连通图至少需n条边。
2025-07-27 23:50:57
825
原创 数据结构入门:像整理收纳一样简单!
摘要:数据结构是计算机科学中关于数据组织、存储和管理的学问。它包含数据元素、数据对象等基本概念,以及逻辑结构(如集合、线性、树形、图形结构)、存储结构(顺序、链式等)和运算操作(插入、删除、查找等)三大要素。就像整理衣柜或照片库一样,数据结构帮助程序员高效地组织和处理数据,是程序设计的重要基础。
2025-07-18 22:30:36
756
原创 LeetCode 197. 上升的温度
原题题目表:Weatherid 是该表具有唯一值的列。没有具有相同 recordDate 的不同行。该表包含特定日期的温度信息编写解决方案,找出与之前(昨天的)日期相比温度更高的所有日期的id。返回结果。结果格式如下例子所示。Weather 表:+----+| id |+----+| 2 || 4 |+----+2015-01-02 的温度比前一天高(10 -> 25)2015-01-04 的温度比前一天高(20 -> 30)
2025-05-05 21:10:00
986
原创 MySQL报错之1175和1093
比如,如果你需要更新一个表的数据,并且需要基于该表的数据进行计算,可以先将表的数据复制到临时表中,再对临时表进行操作。这两个错误在使用 MySQL 时非常常见,但不少人遇到后不知道如何解决,今天我们就从这两个错误的根源开始,逐步分析它们的原因,并提供一些解决方法。(Safe Update Mode)下,系统会防止执行没有明确过滤条件的更新操作,特别是没有用索引列作为。操作时发生,特别是在涉及到主键或唯一索引的情况下。是索引列,这样就符合安全更新模式的要求。条件的更新或删除操作。更好的方法是修改你的。
2025-05-05 03:54:06
1014
原创 MySQL之DML操作
INSERT在数据库中,(Data Manipulation Language,简称 DML)是用于执行和管理数据的 SQL 子集。通过 DML,用户可以对数据库中的数据进行等操作。在这篇博客中,我们将深入探讨这些常见的 DML 操作,并帮助你在实际开发中轻松上手。
2025-05-04 15:14:46
966
原创 在windows中卸载mysql
如果有更改过环境变量,进入【计算机】-->> 右键【属性】-->> 【高级系统设置】 -->> 【环境变量】 -->> 删除系统变量中的MYSQL_HOME和删除Path变量中的MYSQL路径。管理员权限启动cmd -->> sc delete MySQL服务名字(比如我的是MySQL80)如果是通过解压压缩包安装的则跳过这一步,如果是使用.msi文件驱动安装则需要卸载。显示隐藏文件后,删除C盘下的“C:\ProgramData\MySQL”所有文件。进入mysql安装位置,删除mysql的解压文件夹。
2025-05-03 20:18:13
2839
原创 深入了解数据库系统:数据的幕后英雄
为了理解数据库系统的运作,我们可以将它比作一个庞大的电子图书馆:所有的书籍(数据)都按照特定的规则(数据库模型)排列,而读者(用户)则可以通过索引(查询语言)快速找到想要的书籍。: 这是数据库的核心部分,负责执行各种任务,比如数据的存储、更新、删除和查询。无论是大型电商平台上的商品信息,还是社交媒体中我们发布的每一条动态,这些海量的数据都需要有效的存储和管理。SQL是一种专门用来查询和操作关系型数据库的语言,通过编写SQL语句,用户可以实现对数据的增、删、改、查等操作。: 数据库本身就是存储数据的地方。
2025-05-03 05:10:56
597
原创 Leetcode 182. 查找重复的电子邮箱
Leetcode 182. 查找重复的电子邮箱使用 GROUP BY 和 HAVING使用 WINDOW 函数——OVER (PARTITION BY email)
2025-05-03 00:53:38
965
原创 Leetcode 181. 超过经理收入的员工
原题题目Employeeid 是该表的主键(具有唯一值的列)。该表的每一行都表示雇员的ID、姓名、工资和经理的ID。编写解决方案,找出收入比经理高的员工。以返回结果表。结果格式如下所示。Employee 表:Joe 是唯一挣得比经理多的雇员。
2025-05-03 00:08:47
1995
原创 MySql之笛卡尔积
笛卡尔积是指两个集合之间的所有可能的组合。在数据库中,它通常出现在两个表之间。当你没有明确指定联接条件时,数据库会将每个表的每一行与另一个表的每一行组合,产生一个新的结果集,这个结果集的行数是两个表的行数相乘。
2025-05-02 23:40:04
468
原创 a = null 和 a is null 的本质区别
在 SQL 中代表“未知”、“缺失”或“不适用”的值。它不是一个具体的值(如 0 或空字符串 '')。就像在问:“这个盒子里的东西,和那个‘不知道里面是什么’的盒子里的东西,是。这是因为你无法确定一个未知值是否等于另一个未知值。‘不知道里面是什么’的盒子?” 答案是明确的:“是有本质区别的,主要在于它们如何处理。是一个“不知道里面是什么”的盒子。的标准方式,并且在大多数情况下。SQL 提供了专门的操作符。操作符,它直接判断一个值。等操作符)的结果都是。就像在问:“这个盒子。,因此不会匹配任何行。
2025-04-23 04:33:08
406
原创 MySQL 多表连接(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)
多表连接是一种将两个或多个表中的数据组合在一起的 SQL 操作。通过连接,我们可以根据表之间的关系(如主键和外键)提取相关联的数据。连接操作是关系型数据库的核心功能之一,广泛应用于数据分析、报表生成等场景。
2025-04-23 00:59:34
2715
原创 Leetcode 175. 组合两个表
LEFT JOIN表:Person| 列名 | 类型 |personId 是该表的主键(具有唯一值的列)。该表包含一些人的 ID 和他们的姓和名的信息。表:Address| 列名 | 类型 |addressId 是该表的主键(具有唯一值的列)。该表的每一行都包含一个 ID = PersonId 的人的城市和州的信息。编写解决方案,报告Person表中每个人的姓、名、城市和州。如果personId的地址不在Address表中,则报告为null。
2025-04-23 00:38:03
572
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人