数据结构与编程
发表于|更新于|数据结构
今天是2023年3月10日,我是一名软件专业的学生,正在学习数据结构与算法。
数据结构是计算机科学中非常重要的一个分支,它研究的是数据的组织和存储方式,以及如何对数据进行操作和访问。算法是计算机科学中非常重要的一个分支,它研究的是如何解决问题的方法和步骤。
目前的学习目标是:蓝桥杯国奖
文章作者: CanJisam
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 诒森的博客!
相关推荐

2025-03-10
Java数据结构实现详解
Java数据结构实现详解本文详细介绍了各种基本数据结构的Java实现,包括线性数据结构和非线性数据结构。每种数据结构都包含了基本操作方法、时间复杂度分析以及使用示例,可以作为学习数据结构与算法的参考资料。 一、线性数据结构线性数据结构是一种数据元素之间存在一对一关系的数据结构,元素按照线性顺序排列。 1. 数组 (Array)数组是最基本的数据结构,它在内存中是连续存储的,可以通过索引快速访问元素。 特点: 固定大小(静态数组)或可动态调整大小(动态数组) 随机访问元素的时间复杂度为 O(1) 在数组中间插入或删除元素的时间复杂度为 O(n) 主要操作及时间复杂度: 访问元素:O(1) 在末尾添加/删除元素:O(1) 均摊 在中间添加/删除元素:O(n) 查找元素:O(n) 数组结构示意图: 123+---+---+---+---+---+---+| 1 | 2 | 3 | 4 | 5 | 6 | -> 索引:...

2025-03-10
数据结构部分
数据结构部分线性数据结构数组(Array) 定义:连续内存空间存储同类型数据 特点:随机访问,固定大小 操作:插入、删除、查找、遍历、排序 链表(Linked List) 单向链表:每个节点存储数据和后继指针 双向链表:每个节点存储数据和前驱、后继指针 循环链表:尾节点指向头节点 操作:插入、删除、查找、遍历、排序 栈(Stack) 定义:后进先出(LIFO)的线性表 操作:压栈(push)、出栈(pop)、获取栈顶(top) 应用:函数调用、表达式求值、括号匹配 队列(Queue) 定义:先进先出(FIFO)的线性表 类型:普通队列、循环队列、双端队列 操作:入队(enqueue)、出队(dequeue) 应用:任务调度、缓冲区管理 非线性数据结构树(Tree)二叉树(Binary Tree) 完全二叉树 满二叉树 遍历:前序、中序、后序、层序 二叉搜索树(BST) 定义:左子树小于根节点,右子树大于根节点 操作:插入、删除、查找 平均时间复杂度:O(log n) 平衡二叉树(AVL...

2025-03-10
408数据结构考研大纲详解
408数据结构考研大纲详解本文根据计算机专业考研408数据结构大纲,系统地整理了数据结构的核心知识点,包括基本概念、线性表、栈与队列、树与二叉树、图、查找和排序等内容。每个部分都包含了定义、性质、基本操作及其算法实现、时间复杂度分析和典型应用场景,帮助考生全面掌握数据结构的重要知识点。 一、绪论1. 基本概念数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 基本术语: 数据:描述客观事物的符号,是计算机中可以操作的对象 数据元素:数据的基本单位 数据项:构成数据元素的不可分割的最小单位 数据对象:性质相同的数据元素的集合 数据类型:一组性质相同的值的集合及定义在此集合上的一组操作 抽象数据类型(ADT):一个数学模型及定义在该模型上的一组操作 2....

2025-03-24
Java图论算法竞赛应用详解
Java图论算法竞赛应用详解一、图的基本概念1.1 什么是图图(Graph)是一种非线性数据结构,由顶点(Vertex)的集合和边(Edge)的集合组成。在计算机科学中,图被广泛应用于表示各种实际问题,如社交网络、地图导航、网络拓扑等。 1.2 图的基本术语 顶点(Vertex):图中的节点 边(Edge):连接两个顶点的线段 有向图:边有方向 无向图:边无方向 权重:边上的数值 度:与顶点相连的边的数量 1.3 图的存储方式1.3.1 邻接矩阵123456789101112131415public class AdjacencyMatrix { private int V; // 顶点数 private int[][] matrix; // 邻接矩阵 public AdjacencyMatrix(int v) { V = v; matrix = new int[v][v]; } // 添加边 public void addEdge(int source, int...

2025-03-14
Java队列(Queue)用法详解
Java队列(Queue)用法详解队列(Queue)是一种常用的线性数据结构,遵循先进先出(FIFO, First-In-First-Out)的原则,即最先添加的元素最先被移除。本文将详细介绍Java中队列的实现、常用方法以及在ACM算法竞赛中的应用场景。 一、队列的基本概念1.1 队列的定义队列是一种特殊的线性表,它只允许在表的前端(队头)进行删除操作,而在表的后端(队尾)进行插入操作。 1.2 队列的特点 先进先出(FIFO): 最先进入队列的元素最先被移除 单向操作: 只能从队尾插入,从队头删除 线性结构: 元素之间是一对一的关系 1.3 队列的基本操作 入队(enqueue): 将元素添加到队列的末尾 出队(dequeue): 从队列的开头移除元素 查看队首元素(peek): 查看队列开头的元素但不移除 判断队列是否为空(isEmpty): 检查队列中是否有元素 1.4 队列的结构示意图123456 入队 出队 ↓ ...

2025-03-27
二分答案:在算法世界中寻找最优解的「黄金分割术」
二分答案:在算法世界中寻找最优解的「黄金分割术」![二分答案示意图]「在有序的世界里,二分法总能找到答案的曙光。」—— 算法艺术家 引言:当暴力枚举遇上数学之美想象你正在参加一场密室逃脱游戏,面前有1000个上锁的抽屉,其中只有一个藏着通关钥匙。如果逐个打开检查,最坏情况需要尝试999次。但若你掌握「每次排除一半可能」的二分策略,只需10次尝试就能锁定目标。这就是二分答案算法的魅力——将时间复杂度从O(n)骤降至O(logn)的魔法。 一、二分答案的数学根基1.1 定义与核心思想二分答案(Binary Search on Answer)是一种通过验证候选解的可行性,在单调有序的解空间中快速定位最优解的算法。其本质是将最优化问题转化为判定性问题,适用于最大值最小化(Minimax)或最小值最大化(Maximin)类问题。 1.2 算法四步曲 划定边界:确定解空间[lower_bound, upper_bound] 二分试探:计算中间值mid = (low +...
评论