数据结构核心内容

  1. 核心定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合,核心作用是优化数据存储与访问效率,适配不同场景的操作需求(如查询、插入、删除)。

  2. 分类体系:

◦ 线性结构:元素间呈一对一关系,包括数组(固定大小、随机访问快)、链表(动态大小、插入删除快)、栈(先进后出,栈顶操作)、队列(先进先出,首尾操作)、哈希表(键值映射,平均O(1)查询)。

◦ 非线性结构:元素间呈一对多/多对多关系,包括树(层级结构,如二叉树、红黑树)、图(顶点+边,分有向/无向图)、堆(完全二叉树,用于优先级队列)。

  1. 核心操作与复杂度:

◦ 基础操作:增(插入)、删(删除)、改(更新)、查(查找)、排序(调整元素顺序)。

◦ 复杂度关键:时间复杂度(操作执行的指令数增长趋势,如O(1)、O(n)、O(logn))、空间复杂度(存储数据占用的额外空间增长趋势),优化目标是在场景中平衡二者。

  1. 重点数据结构详解:

◦ 数组:连续内存存储,随机访问O(1),插入删除需移动元素(O(n)),适合读多写少场景。

◦ 链表:非连续内存,通过指针连接,插入删除O(1)(找到节点后),查询O(n),适合写多读少场景。

◦ 二叉树:每个节点最多两个子节点,二叉搜索树(左子树<根<右子树)查询O(logn)(平衡时),红黑树/AVL树通过自平衡保证效率,用于Map/Set底层。

◦ 图:由顶点V和边E组成,存储方式有邻接矩阵(稠密图高效)、邻接表(稀疏图省空间),核心算法有深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径(Dijkstra算法)。

◦ 堆:大顶堆(父节点≥子节点)/小顶堆(父节点≤子节点),插入删除O(logn),常用于TopK问题、优先级队列。

  1. 排序与查找算法:

◦ 排序核心:冒泡排序(O(n²),稳定)、快速排序(O(nlogn),不稳定,分治思想)、归并排序(O(nlogn),稳定,分治+合并)、堆排序(O(nlogn),不稳定,利用堆特性)。

◦ 查找核心:顺序查找(O(n),适用于无序数据)、二分查找(O(logn),适用于有序数组)、哈希查找(O(1)平均,依赖哈希函数和冲突解决)。

  1. 核心思想:分治(将大问题拆小求解,如快排、归并)、贪心(每步选局部最优,如哈夫曼编码)、动态规划(存储子问题结果避免重复计算,如最长公共子序列)、回溯(尝试+回退找解,如迷宫问题)。
相关推荐
神龙天舞20011 天前
CMake构建学习笔记-通用的CMake构建脚本
笔记·学习
AOwhisky1 天前
Linux(CentOS)系统管理入门笔记(第二十一期)——防火墙管理(Firewalld)——zone、服务端口、富规则与端口转发
linux·运维·笔记·安全·centos·防火墙
腾飞开源1 天前
01_K8s干货笔记之认识K8s
运维·笔记·云原生·容器·kubernetes·k8s·容器化部署
疯狂打码的少年1 天前
【面向对象】UML结构图:类图(类的关系:依赖/关联/聚合/组合/泛化/实现)
笔记
aaaameliaaa1 天前
字符函数和字符串函数
c语言·笔记·算法
tq10861 天前
开放与封闭:类型系统的安全哲学
笔记
白白白小纯1 天前
算法篇—反转链表
c语言·数据结构·算法·leetcode
龙仔7251 天前
人大金仓 KingbaseES V8 只读账号创建完整运维笔记
运维·笔记·sql·人大金仓
韭菜炒鸡肝天1 天前
VTK开发笔记(一):VTK介绍,Qt..+VSx+VTK.编译
开发语言·笔记·qt
峥无1 天前
C++11 深度详解:现代 C++ 基石全梳理
开发语言·c++·笔记