- 博客(10)
- 收藏
- 关注
原创 C++:sort 函数原理和用法
本文总结了C++ sort() 函数的核心用法和原理。sort() 通过混合快速排序、插入排序和堆排序实现高效排序(复杂度$O(n\log n)$),但属不稳定排序。文章详解了基础数组/容器排序、自定义比较规则(函数指针/Lambda/结构体)、高级应用(部分排序/字符串特殊排序)等场景,并给出性能优化建议(预分配内存、避免值传递)。特别强调比较函数需满足严格弱序,排序范围为左闭右开区间。sort() 适合高效排序需求,若需稳定排序应使用stable_sort()。
2025-07-20 15:51:35
362
原创 深入探究 vector:刷题必备的动态数组详解与进阶理解
C++ vector容器摘要 vector是C++标准库中的动态数组容器,相比静态数组具有自动内存管理的优势。它支持随机访问,时间复杂度为O(1),可在尾部高效插入/删除元素。主要特点包括: 动态扩容:自动处理内存分配与释放,无需手动管理 多种初始化方式:支持花括号、圆括号、迭代器等多种初始化方法 元素访问方式多样:可通过[]、at()、迭代器、范围for等方式访问 常用操作: push_back()/pop_back():尾部插入/删除(O(1)) size():获取元素数量 begin()/end():
2025-07-20 14:54:50
1079
原创 一致性哈希原理
一致性哈希通过哈希环与虚拟节点技术,在分布式系统中实现了节点动态变化时的路由稳定性,是解决缓存雪崩、负载均衡的核心算法之一。实际应用中需结合业务场景选择哈希函数与虚拟节点数量,兼顾性能与均匀性。
2025-07-09 21:22:02
1037
原创 二叉树深度解析:概念、存储结构、构造方法与遍历实现(附代码)
本文系统梳理了树与二叉树的核心概念及存储结构。首先定义了树的基本术语(节点度、叶子节点、层次高度等),并强调二叉树与度为2的树的区别。重点讲解了二叉树的链式(二叉链表、三叉链表)和顺序存储结构,其中顺序存储仅适用于完全二叉树。详细分析了满二叉树、完全二叉树、二叉排序树和平衡二叉树等特殊类型,并给出C语言的结构定义及初始化方法。最后通过实例展示了二叉树的两种构造方式:手动构建固定结构和基于带终止符的先序序列递归构建,为后续二叉树操作奠定基础。
2025-07-08 11:52:11
1105
1
原创 数据结构自学笔记(六):串,朴素模式匹配算法(暴力算法),KMP算法,next数组
本文介绍了字符串的存储方式和两种模式匹配算法。串可通过顺序存储(数组)或链式存储实现,分别适合频繁读取和频繁修改的场景。朴素模式匹配算法通过逐个字符比较实现简单匹配,但效率较低(O(nm))。KMP算法利用next数组优化匹配过程,避免主串回溯,提升效率至O(n+m)。next数组记录模式串的最长前后缀,是KMP算法的核心。对比显示,KMP虽实现复杂但效率更高,适合处理大规模文本匹配。
2025-07-04 16:36:13
228
1
原创 数据结构自学笔记(五):栈,顺序栈,共享栈,链栈,队列,顺序队列,循环队列,链式队列和双端队列
本文总结了栈和队列两种线性结构的定义、实现方式及对比。栈遵循后进先出(LIFO)原则,介绍了顺序栈、共享栈和链栈的实现方法;队列遵循先进先出(FIFO)原则,重点讲解了循环队列的三种判满方案和链式队列的实现。全文通过代码示例展示了各结构的核心操作,并分析了不同实现方式的优缺点,为数据结构基础学习提供了系统性的梳理。
2025-07-03 19:49:56
975
1
原创 数据结构自学笔记(四):单链表,双链表,循环链表和静态链表
链表核心知识点摘要 单链表:通过指针链接节点,含数据域和指针域。带头结点版本操作更统一,支持按位序插入/删除(O(n))、指定结点后插(O(1))等操作。双链表引入前驱指针,支持双向遍历,插入删除需同步更新prior/next指针。循环链表(单/双)首尾相连,静态链表用数组模拟指针。优缺点:单链表节省空间但单向遍历;双链表操作灵活但结构复杂;循环链表避免遍历找尾;静态链表适合无指针环境但容量固定。关键操作均需注意边界处理(头尾结点)。
2025-07-03 15:18:07
406
1
原创 数据结构自学笔记(三):线性表和顺序表
线性表是由相同数据类型元素组成的有限序列,具有元素类型一致、数量有限和顺序排列的特性。顺序表是其连续存储实现方式,分为静态和动态分配两种形式。顺序表支持高效的随机访问(O(1)),但插入删除操作需移动元素(O(n))。其优点是存储密度高,缺点是扩容效率低且需连续内存空间。主要操作包括初始化、销毁、增删改查等,时间复杂度因操作类型而异。
2025-07-02 16:30:38
268
原创 数据结构自学笔记(二):时间复杂度与空间复杂度
描述:算法额外空间开销(不包括输入数据)随nnn增长的趋势。原地工作:额外空间为常量时,空间复杂度O1O(1)O1。
2025-07-02 15:35:53
560
1
原创 数据结构自学笔记(一):基础概念
数据项构成数据元素,数据元素集合形成数据对象,通过关系组织成为数据结构。三要素中,逻辑结构决定关联方式,存储结构实现物理表示,运算操作提供功能接口。前者强调元素集合,后者强调元素间的关联方式。抽象数据类型(ADT)描述逻辑行为和接口规范,例如栈的push/pop操作,与具体实现方式无关。数据项则是数据元素的构成属性,如学生记录中的学号、姓名等字段。数据是计算机处理的符号集合,包括数值、文本、图像等原始信息。数据对象指同类数据元素的集合,如全班学生记录。数据元素是数据的基本单元,例如一条学生记录。
2025-07-02 15:15:44
264
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人