数据结构与算法
文章平均质量分 84
阿狸轰
这个作者很懒,什么都没留下…
展开
-
数据结构-堆
堆(Heap)是一种特殊的数据结构,通常用于实现优先队列、堆排序等算法。堆分为最大堆和最小堆两种形式。堆通常是一棵完全二叉树,除了最底层,其他层的节点都是满的,而且最底层的节点尽量靠左排列。堆通常通过数组来表示,其中父节点和子节点之间的关系可以通过数组的索引关系直接映射。在最大堆中,父节点的索引 i 对应的左子节点索引为 2i+1,右子节点索引为 2i+2;在最小堆中,左右子节点的关系略有不同。堆结构支持高效的插入和删除操作。原创 2023-12-14 17:55:07 · 1125 阅读 · 0 评论 -
动态规划的理解
确定问题的状态,即问题的子结构。状态应该包含足够的信息来描述问题的一个局部最优解。原创 2023-12-10 21:58:42 · 945 阅读 · 0 评论 -
数据结构-树
树是一种层次结构的数据结构,由节点和边组成。每个节点有一个父节点和零个或多个子节点。树结构常用于表示层次关系,如文件系统、组织结构等。节点的最上层称为根节点,没有子节点的节点称为叶子节点。在树结构中,节点之间不能形成环路。常见的树结构包括二叉树、二叉搜索树、平衡树等。原创 2023-12-09 01:00:13 · 1220 阅读 · 0 评论 -
图论的基本知识
图论是数学的一个分支,研究图(Graph)的结构、性质以及它们之间的关系。寻找一个图的生成树,即包含图中所有顶点且边的权重之和最小的树。在图中寻找一种最优的流动方式,通常用于建模网络中的资源分配、流量控制等问题。在计算机科学中,图论用于设计和分析网络拓扑结构、路由算法、网络流等,以提高网络性能和可靠性。图由节点(顶点)和连接节点的边组成。图神经网络等图学习方法利用图论的概念来处理具有图结构的数据,如社交网络、分子结构等。对图算法的复杂性进行分析,包括时间复杂性和空间复杂性,以评估算法在大规模图上的效率。原创 2023-12-03 16:44:32 · 4503 阅读 · 0 评论 -
加密算法的理解
密钥的保护和安全传递,以及正确选择加密模式对系统的整体安全性至关重要。对称加密在很多场景中是高效、可靠的选择,但密钥管理和密钥交换等问题需要得到妥善解决。公钥基础设施(Public Key Infrastructure,PKI)是一套涉及加密通信的技术、政策和标准,用于确保数字通信的安全性和可信性。加密算法是信息安全领域中的核心概念,用于保护数据的机密性、完整性和可用性。混合加密是一种将对称加密和非对称加密结合使用的加密技术,以发挥各自的优势。对称加密是一种使用相同密钥进行加密和解密的加密算法。原创 2023-11-29 21:57:02 · 1059 阅读 · 0 评论 -
消息队列的消息投递的几种模型
消息队列的请求-回复模型(Request-Reply Model)通常用于实现分布式系统中的同步通信,其中一个组件发送请求消息,而另一个组件接收并处理请求,并发送回复消息。消息队列的优先级模型是一种消息传递模式,其中消息可以被赋予不同的优先级,高优先级的消息优先被处理。消息队列的事务性模型是一种消息传递模式,其中消息的发送和接收可以与事务绑定,确保消息的可靠性传递。这种模型允许实现实时通信和消息的定向传递,让消息的发送者和接收者之间保持松散的关联,提高系统的可扩展性和灵活性。原创 2023-11-28 17:20:09 · 977 阅读 · 0 评论 -
Lock free的数据结构
以下是一个简单的基于 CAS 的 Java 版本无锁散列表的示例,使用。方法使用 CAS 操作来更新计数器的值。以下是一个简单的基于 CAS(Compare and Swap)的 Java 版本的无锁链表实现。以下是一个简单的基于 CAS(Compare and Swap)的 Java 版本的无锁计数器实现。以下是一个简单的基于 CAS(Compare and Swap)的 Java 版本的无锁队列实现。允许多个线程并发地进行计数操作,如无锁计数器中的CAS(Compare and Swap)实现等。原创 2023-11-28 16:54:57 · 969 阅读 · 0 评论 -
链表的经典算法题
链表是常见的数据结构之一,有许多经典的算法问题涉及到链表。将链表反转,即将原链表的每个节点的指针方向反向。判断链表中是否存在环,即链表是否形成了一个闭环。将两个有序链表合并成一个有序链表。删除有序链表中的重复元素,使每个元素只出现一次。删除链表中倒数第N个节点。找到链表的中间节点,如果有两个中间节点,返回第二个。交换链表中相邻的节点,返回新的头节点。判断链表是否是回文结构,即链表从前往后和从后往前读是相同的。找到环形链表的起始节点。找到两个链表相交的起始节点。原创 2023-11-19 13:54:51 · 173 阅读 · 0 评论 -
拓扑排序的解题思路
这是一个经典的拓扑排序问题,拓扑排序的思想是从有向图中选择一个入度为0的节点,输出它,并移除它以及以它为起点的边,重复这个过程直到所有节点都被输出。拓扑排序是解决有向无环图(DAG)中节点的线性排序问题,使得图中的每一条有向边均从排在前面的节点指向排在后面的节点。如果最终得到的排序与图中节点的数量相等,那么拓扑排序是成功的。将入度为0的节点加入队列,并依次弹出队列的节点,更新其邻居节点的入度。如果最终结果列表的长度等于图中的节点数,说明图是有向无环图(DAG),否则存在环,无法进行拓扑排序。原创 2023-11-19 13:37:12 · 84 阅读 · 0 评论