数据结构
文章平均质量分 83
一起学习数据结构相关内容
智慧老师
架构设计,分布式微服务方案设计,中间件方案选型分析
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构第一弹-数据结构在不同领域的应用
数组与链表为基本的数据存储提供了基础支持,而栈与队列为特定的操作模式提供了高效的解决方案。Trie树,也称为前缀树或字典树,是一种用于存储字符串集合的数据结构。堆是一种特殊的完全二叉树,分为最大堆和最小堆两种类型。不同的数据结构适用于解决不同类型的问题,从简单的数组到复杂的图结构,每种数据结构都有其独特的应用场景。并查集是一种用来管理不相交集合的数据结构,支持合并两个集合以及查询两个元素是否属于同一个集合的操作。图是由顶点(节点)和边组成的非线性数据结构。边可以是有向的也可以是无向的,还可以有权重。原创 2024-12-09 22:26:31 · 975 阅读 · 0 评论 -
数据结构第一弹-高级数据结构
Trie树,也称为前缀树或字典树,是一种用于存储字符串集合的数据结构。Trie树以其高效的字符串操作能力在文本处理领域有着广泛的应用,而并查集则因其简洁的接口和强大的集合管理能力成为了许多算法的基础组件之一。除了常见的数组、链表、栈、队列等基本数据结构外,还有许多高级数据结构能够解决特定问题,提供更高效或更优雅的解决方案。并查集是一种用来管理不相交集合的数据结构,支持合并两个集合以及查询两个元素是否属于同一个集合的操作。大家好,今天和大家一起学习一下数据结构中的高级数据结构,比如Trie树,并查集等~原创 2024-12-08 21:39:43 · 484 阅读 · 0 评论 -
数据结构第一弹-字符串处理
在不同的编程语言中,字符串的内部表示方式可能有所不同,但大多数现代语言都支持Unicode编码,以适应全球多种语言的需求。KMP算法是一种高效的字符串匹配算法,其核心思想是利用已经部分匹配的信息避免重复计算。字符串处理是计算机科学领域的一个重要课题,涉及到许多复杂的算法和技术。暴力法是最直接的字符串匹配方法,它通过逐个字符比较的方式找到子串的位置。简单的字符串压缩可以通过统计连续相同字符的数量来实现。原创 2024-12-07 16:36:57 · 781 阅读 · 0 评论 -
数据结构第一弹-哈希表
在最坏的情况下,例如所有的键都被映射到了同一个槽位上,哈希表的性能可能会退化到O(n)。然而,在实际应用中,由于碰撞(即不同的键可能被映射到相同的索引位置)的存在,性能可能会有所下降。无论是用于简单的键值对存储还是复杂的分布式系统中,哈希表都是一个强大的工具,欢迎大家一起评论区讨论~哈希表(Hash Table)是一种非常重要的数据结构,它通过使用哈希函数将键(key)映射到一个固定范围的索引值上,从而实现快速的查找、插入和删除操作。哈希表是实现字典的理想选择,因为它支持高效的查找、插入和删除操作。原创 2024-12-06 21:39:04 · 1274 阅读 · 0 评论 -
数据结构第一弹-图
图(Graph)是一种非线性的数据结构,它由节点(也称为顶点,Vertices)和边(Edges)组成。如果是0,则表示不存在边。无论是简单的关系表示还是复杂的网络分析,图都能提供有效的解决方案,欢迎大家一起在评论区讨论~编译器在进行代码优化时,可以将程序转换成控制流图(CFG),通过对图的操作来识别冗余代码、循环不变量等,从而提高程序效率。例如,在关系型数据库中,外键约束可以形成一张图,帮助优化查询性能。BFS则从一个给定的起点开始,逐层向外扩展,先访问离起点最近的所有节点,然后再访问更远一层的节点。原创 2024-12-06 21:34:33 · 1454 阅读 · 0 评论 -
数据结构第一弹-堆
该算法首先将待排序的数组构造成一个最大堆(或最小堆),然后反复移除堆顶元素并重建堆,直到所有元素都被移除。堆是一种完全二叉树(Complete Binary Tree),其中每个节点的值都大于或等于(最大堆)或小于或等于(最小堆)其子节点的值。如果不满足,则与较大的子节点(最大堆)或较小的子节点(最小堆)交换,直到满足为止。完全二叉树是一种特殊的二叉树,在这种树中,除了最后一层外,每一层都是完全填充的,并且所有结点都尽可能地向左靠拢。上滤操作是指当一个新节点被插入到堆底时,需要检查该节点是否满足堆的性质。原创 2024-12-05 21:20:48 · 954 阅读 · 0 评论 -
数据结构第一弹-平衡树
无论是AVL树还是红黑树,它们的核心思想都是通过限制树的高度来保证高效的查询速度。平衡树是一种自我调整的数据结构,旨在保持左右子树的高度差不超过一个特定值,以确保插入、删除等操作后树仍能保持较佳的时间复杂度。根据维护平衡的方式不同,平衡树可以分为多种类型,其中最著名的包括AVL树、红黑树等。与AVL树相比,红黑树牺牲了一定程度的严格平衡性,换来的是更简单的维护成本及更高的实际运行效率。平衡树是一种特别重要的数据结构,它通过维持树的高度来保证操作的效率,从而在众多数据结构中脱颖而出。原创 2024-12-04 22:21:04 · 1341 阅读 · 0 评论 -
数据结构第一弹-栈
栈的这一端通常被称为“栈顶”,相对的一端称为“栈底”。如果是运算符,则弹出栈顶两个元素作为操作数,根据运算符进行计算,并将结果再压入栈。最后,栈中剩下的唯一元素即为表达式的计算结果。栈是一种非常基础且重要的线性数据结构,它遵循后进先出(LIFO, Last In First Out)的原则。今天详细介绍栈的基本概念、操作方法、实现方式以及在实际应用中的示例。如果希望进一步分析,可以尝试实现一些更复杂的栈应用场景,如深度优先搜索算法、内存管理等。此外,也可以考虑研究其他类型的数据结构,如队列、树、图等。原创 2024-12-04 22:15:45 · 462 阅读 · 0 评论 -
数据结构第一弹-链表
与数组不同,链表中的元素不必存储在连续的内存位置上,这使得链表在插入和删除操作上更加灵活。链表是由一系列节点组成的数据结构,每个节点包含数据部分(可以是一个简单值或复杂对象)和指向下一个节点的引用(指针)。根据节点间链接方式的不同,链表可以分为单向链表、双向链表和循环链表等几种类型。此外,链表也是许多高级数据结构的基础,如哈希表中的桶、树的子节点列表等。这是执行其他操作的基础步骤。若要删除链表中的某个特定节点,则需要找到该节点及其前一个节点。如果要在链表中间或尾部插入节点,则需要先找到正确的插入位置。原创 2024-12-03 23:45:59 · 387 阅读 · 0 评论 -
数据结构第一弹-数组
虽然数组存在一些局限性,如固定大小和在非末尾位置进行插入/删除操作时效率较低,但通过合理的设计和优化,这些问题往往可以得到缓解。数组之所以能够实现高效的随机访问,是因为它的元素在内存中是连续存储的。每个元素占据固定的内存空间,因此可以通过简单的数学运算计算出任意元素的地址。数组是一种线性数据结构,它由相同类型的元素组成,这些元素按照一定的顺序排列,并且存放在连续的内存空间中。例如,在一个整型数组中,如果每个整数占4个字节,那么第3个元素(索引为2)的地址就是基址加上2×4字节。原创 2024-12-02 22:30:58 · 630 阅读 · 0 评论 -
数据结构第一弹-算法复杂度分析
算法复杂度分析是一种评估算法性能的方法,它通过计算算法运行时间或空间需求来衡量算法的好坏。通过了解不同类型的复杂度以及如何进行分析,可以更好地选择合适的算法和数据结构,从而构建出更加高效的应用程序。时间复杂度关注的是算法执行所需的时间,而空间复杂度则关注算法执行过程中所占用的内存空间。冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较每对相邻元素,并且如果它们的顺序错误就把它们交换过来。在这个例子中,我们遍历整个数组一次,因此该函数的时间复杂度为 O(n),其中 n是数组的长度。原创 2024-12-02 22:17:25 · 970 阅读 · 0 评论 -
数据结构第一弹-线性VS非线性
在计算机科学中,数据结构是组织和存储数据的方式,它直接影响到算法的效率。根据数据元素之间的关系,数据结构可以分为两大类:线性数据结构和非线性数据结构。线性数据结构中的元素按照顺序排列,每个元素都有一个直接前驱和一个直接后继(除了第一个和最后一个元素)。常见的线性数据结构包括数组、链表、栈和队列。非线性数据结构中的元素之间没有固定的顺序,通常表现为树形或图状结构。print(numbers) # 输出 [1, 2, 3, 4, 5, 6]大家好,今天和大家一起学习一下数据结构,先了解一下线性与非线性~原创 2024-12-01 17:17:32 · 460 阅读 · 0 评论 -
数据结构第一弹-二叉树
二叉树及其变种,特别是二叉搜索树,是计算机科学中非常重要的数据结构。通过理解二叉树的基本概念和操作,以及二叉搜索树的特点和优势,可以更加灵活地解决各种问题,欢迎一起讨论~二叉树可以是空树,也可以由一个根节点加上两棵互不相交的左子树和右子树组成。由于二叉搜索树的有序性,我们可以通过比较节点值来高效地定位目标节点。二叉树是一种每个节点最多有两个子节点的数据结构,通常被分为左子节点和右子节点。对于第三种情况,通常选择用右子树的最小节点或左子树的最大节点来替换待删除节点。要删除的节点是叶节点。原创 2024-12-01 15:27:08 · 1187 阅读 · 0 评论 -
数据结构第一弹-队列
队列是一种特殊的线性表,它只允许在一端进行插入操作,在另一端进行删除操作。在这个例子中,每当有新顾客到达银行时,他们会被加入到队列中。无论是简单的线性队列还是更复杂的循环队列,都能有效解决各种场景,欢迎大家一起讨论~队列是一种非常重要的线性数据结构,遵循先进先出(FIFO, First In First Out)的原则。在网络通信中,队列常用来作为缓冲区,临时存放待发送或接收的数据包。打印机通常有一个任务队列,用户提交打印请求后,这些请求会被加入到队列中,打印机依次处理这些任务。# 使用链表实现的队列。原创 2024-11-29 23:05:07 · 760 阅读 · 0 评论
分享