![](https://img-blog.csdnimg.cn/20200708194139169.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
关于数据结构和算法的学习总结
Lw中
Better forever.
展开
-
复杂度分析
复杂度分析是整个算法的精髓,衡量算法好坏的两个重要指标是时间复杂度分析以及空间复杂度分析原创 2020-07-11 17:27:38 · 307 阅读 · 0 评论 -
数据结构中的结构
按照视点的不同,我们把数据结构分为逻辑结构和物理结构。原创 2020-08-01 09:43:02 · 441 阅读 · 0 评论 -
数组
数组对应的英文是array,是有限个相同类型的变量所组成的有序集合,数组中的每一个变量被称为元素。数组是最为简单、最为常用的数据结构。原创 2020-07-11 21:09:04 · 258 阅读 · 0 评论 -
链表
“上级的姓名、住址,我知道,下级的姓名、住址,我也知道,但是这些都是我们党的秘密,不能告诉你们!”地下党借助这种单线联络的方式,灵活隐秘地传递着各种重要信息。在计算机科学领域里,有一种数据结构也恰恰具备这样的特征,这种数据结构就是链表。原创 2020-07-12 17:52:53 · 465 阅读 · 0 评论 -
栈
栈(stack)是一种线性数据结构,它就像一个放入乒乓球的圆筒容器,栈中的元素只能先入后出(First In Last Out,简称FILO)。最早进入的元素存放的位置叫作栈底(bottom),最后进入的元素存放的位置叫作栈顶(top)。原创 2020-07-13 11:43:14 · 720 阅读 · 0 评论 -
队列
为了理解队列这个概念,你可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进者先出,这就是典型的“队列”。原创 2020-07-13 20:55:36 · 918 阅读 · 0 评论 -
散列表
散列表也叫作哈希表(hash table),这种数据结构提供了键(Key)和值(Value)的映射关系。只要给出一个Key,就可以高效查找到它所匹配的Value,时间复杂度接近于O(1)。原创 2020-07-22 11:20:19 · 979 阅读 · 0 评论 -
跳表
二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现。不过,只需要对链表稍加改造,就可以支持类似“二分”的查找算法。而这改造之后的数据结构叫做跳表。原创 2020-07-30 14:14:20 · 1163 阅读 · 0 评论 -
树
有许多逻辑关系并不是简单的线性关系,在实际场景中,常常存在着一对多,甚至是多对多的情况,其中树就是典型的非线性数据结构。原创 2020-07-26 09:48:02 · 189 阅读 · 0 评论 -
Trie树
Trie 树,也叫“字典树”。顾名思义,它是一个树形结构。它是一种专门处理字符串匹配的数据结构,用来解决在一组字符串集合中快速查找某个字符串的问题。原创 2020-07-31 17:29:01 · 208 阅读 · 2 评论 -
堆
堆排序是一种原地的、时间复杂度为 O(nlogn) 的排序算法。原创 2020-07-28 18:59:33 · 189 阅读 · 0 评论 -
优先队列
二叉堆是实现优先队列的基础。原创 2020-08-01 09:04:54 · 246 阅读 · 0 评论 -
图
图是一种非线性数据结构,和树比起来这是一种更为复杂非线性数据结构。原创 2020-07-29 13:52:57 · 170 阅读 · 0 评论 -
算法之递归
递归是一种应用非常广泛的算法(或者编程技巧)。很多数据结构和算法的编码实现都要用到递归,比如 DFS 深度优先搜索、前中后序二叉树遍历等等。原创 2020-07-15 16:27:21 · 142 阅读 · 0 评论 -
算法之排序
在生活中,我们离不开排序。例如上体育课时,同学们会按照身高顺序进行排队;又如每一场考试后,老师会按照考试成绩排名次。原创 2020-07-18 19:02:56 · 632 阅读 · 0 评论 -
算法之二分查找
二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。原创 2020-07-20 20:36:09 · 95 阅读 · 0 评论 -
算法之哈希
哈希算法历史悠久,业界著名的哈希算法也有很多,比如 MD5、SHA 等。原创 2020-08-09 19:39:18 · 362 阅读 · 0 评论 -
算法之搜索
搜索算法是利用计算机的高性能来有目的的穷举一个问题解空间的部分或所有的可能情况,从而求出问题的解的一种方法。原创 2020-07-30 11:04:08 · 211 阅读 · 0 评论 -
算法之字符串匹配
编程语言提供的字符串查找函数,比如 Java 中的 indexOf(),Python 中的 find() 函数等,它们底层就是依赖字符串匹配算法。原创 2020-08-09 20:12:24 · 280 阅读 · 1 评论 -
算法之贪心
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。原创 2020-08-12 16:00:50 · 231 阅读 · 0 评论 -
算法之分治
字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。原创 2020-08-13 16:34:30 · 331 阅读 · 0 评论 -
算法之回溯
回溯算法本质上就是枚举,优点在于其类似于摸着石头过河的查找策略,且可以通过剪枝少走冤枉路。它可能适合应用于缺乏规律,或我们还不了解其规律的搜索场景中。原创 2020-08-14 14:54:22 · 224 阅读 · 0 评论 -
算法之动态规划
动态规划的英文名Dynamic Programming,是一种分阶段求解决策问题的数学思想。它不止用于编程领域,也用于管理学、经济学、生物学。原创 2020-08-15 17:34:27 · 1679 阅读 · 0 评论