![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
文章平均质量分 72
数据结构和算法详解
yueerba126
刚满十八岁
展开
-
常用数据结构与算法 (一篇文章带你玩转各种技术)
【代码】常用数据结构与算法。原创 2023-10-30 10:15:45 · 77 阅读 · 0 评论 -
常用算法-图算法
使用二维数组存储每对顶点之间的最短路径。对于每个顶点,尝试使用它作为中间节点,更新所有顶点对的路径长度。重复此过程,直到所有顶点都被考虑为中间节点。从起始节点开始,更新每个相邻节点的路径长度。选择当前路径最短的节点,然后更新其相邻节点的路径长度。重复此过程,直到所有节点都被访问。将起始节点放入队列中,然后进入循环,直到队列为空。在每次循环中,从队列中取出一个顶点,访问它,然后将所有未访问的邻居加入队列。从起始节点开始,访问一个相邻节点,并继续深入,直到没有未访问的相邻节点为止,然后返回。原创 2023-10-28 18:55:49 · 42 阅读 · 0 评论 -
常用算法-动态规划
动态规划是一种强大的解决复杂问题的技术,它通过分解问题成小问题来解决大问题。通过存储子问题的解,可以避免重复的工作,从而提高效率。Dijkstra算法使用优先队列来选择当前最短路径的顶点,并更新其相邻顶点的路径长度。这个过程会重复,直到找到所有顶点的最短路径。Bellman-Ford算法会重复地遍历所有的边,尝试更新每个边的两个顶点之间的距离。个字符的第二个序列的LCS的长度。个物品中选择总重量不超过。个字符的第一个序列和前。原创 2023-10-28 18:54:42 · 39 阅读 · 0 评论 -
常用算法-贪心算法
贪心算法每次都选择当前最好的选择,希望通过一系列的局部最优选择来得到全局的最优解。但在某些情况下,贪心算法可能不会得到最优解。贪心算法可以通过Prim’s或Kruskal’s算法找到最小生成树。霍夫曼编码通常涉及多个步骤和数据结构,例如优先队列。原创 2023-10-28 18:53:50 · 47 阅读 · 0 评论 -
常用算法-分治算法
分治算法是一种解决问题的技巧,它将问题分解为更小的、更容易解决的子问题,然后将子问题的解合并以得到原问题的解。原创 2023-10-28 18:52:52 · 32 阅读 · 0 评论 -
常用算法-递归算法
Tower of Hanoi是一个用于理解递归概念的经典问题。原创 2023-10-28 18:52:05 · 34 阅读 · 0 评论 -
常用算法-搜索算法
二分搜索只适用于有序列表。如果列表无序,您必须首先对其进行排序,这可能增加总体搜索时间。原创 2023-10-28 18:50:40 · 55 阅读 · 0 评论 -
常用算法-排序算法
不同排序算法的选择取决于具体情况。例如,对于较小的数组,插入排序可能比其他更复杂的算法更快。而对于大型数组,归并排序和堆排序等算法可能更加高效。原创 2023-10-28 18:39:44 · 39 阅读 · 0 评论 -
常用数据结构-时间复杂度和空间复杂度
一个简单的旅行商问题的求解可能会尝试所有可能的路径来找到最短的路径,这导致了 (O(n!: 与时间复杂度类似,我们通常只关心空间复杂度的增长率。在实际应用中,可能会遇到更复杂的情况和算法。: 空间复杂度主要考虑额外的空间使用,不包括输入和输出数据本身所占用的空间。无论输入数据的大小如何,算法都使用固定大小的额外空间。无论输入数据的大小如何,算法都执行固定数量的操作。: 二分搜索的递归调用(或迭代深度)是对数的。常见于一些递归算法,其中递归的深度是对数的。算法的执行时间与输入数据的大小成正比。原创 2023-10-28 18:36:12 · 178 阅读 · 0 评论 -
常用数据结构-哈希表 (Hash Table)
⚠️ 注意: 在使用哈希表时,应考虑哈希函数的选择、装载因子和扩容策略,以确保性能。哈希表是一种使用哈希函数将键映射到存储位置的数据结构,以实现快速数据查找。原创 2023-10-28 18:12:42 · 102 阅读 · 0 评论 -
常用数据结构-图 (Graph)
在Java中,虽然标准库没有为图数据结构提供直接的实现,但我们可以使用两种主要方法来表示和实现图: 邻接矩阵和邻接列表。⚠️ 注意: 在选择工具库时,应考虑库的功能、性能、易用性以及社区支持。不同的图库可能更适合不同的应用和需求。⚠️ 注意: 在实际应用中,根据图的特性和操作的需求来选择使用邻接矩阵还是邻接列表。原创 2023-10-28 18:08:18 · 186 阅读 · 0 评论 -
常用数据结构-二叉树 (Binary Tree)
二叉搜索树(BST)是一种特殊的二叉树,其中每个节点的左子树中的所有元素的值都小于节点的值,而右子树中的所有元素的值都大于节点的值。原创 2023-10-28 17:54:13 · 114 阅读 · 0 评论 -
常用数据结构-队列 (Queue)
⚠️ 注意: 以上的工具类并不能代替Java SDK中的队列,而是为特定的应用场景提供了额外的功能。在选择时,应当基于实际需求来选择最合适的工具类。Apache Commons Collections 提供了一系列增强的数据结构和算法,对于队列来说,它扩充了 Java SDK 提供的队列功能。Google Guava 是另一个功能丰富的 Java 库,它提供了一些队列的增强功能。原创 2023-10-28 17:43:45 · 168 阅读 · 0 评论 -
常用数据结构-栈 (Stack)
作为栈的实现通常是首选,因为它比。更快且具有更多的功能。原创 2023-10-28 17:11:21 · 67 阅读 · 0 评论 -
常用数据结构-链表 (Linked List)
链表的大小可以动态调整,不像数组需要预先指定。:链表中的元素在内存中不是连续存放的。:每个链表节点通常包含数据部分和指向下一个节点的指针。:在链表中插入或删除一个节点比数组更高效,特别是在链表的开始和中间位置。:因为链表存储了节点间的关系(如指针),所以相比于数组它有额外的内存开销。:访问链表中的特定元素需要从头开始遍历,直到找到所需的元素。原创 2023-10-28 16:57:06 · 94 阅读 · 0 评论 -
常用数据结构-数组 (Array)
声明与初始化访问数组元素:修改数组元素:数组长度:遍历数组:使用for循环:使用增强型for循环 (foreach):多维数组:🚀 常用场景数据处理:当你需要处理固定数量的相似类型的数据时,例如像素值、成绩列表等。算法实现:许多基础算法,如排序算法(冒泡排序、插入排序等),都是基于数组实现的。缓存机制:有时数组用作缓存,以便快速读取和临时存储数据。查找操作:当你需要快速访问数据集中的特定元素时,如在哈希表实现中。多维数据:使用多维数组,例如二维数组,可原创 2023-10-28 16:49:24 · 138 阅读 · 0 评论