数据结构与算法
文章平均质量分 91
希境
被代码耽误了的厨师
展开
-
重学数据结构六:算法思维基础-递归、分治
递归不管是数据结构还是算法思维,它们的目标都是降低时间复杂度。数据结构是从数据组织形式的角度达成这个目标,而算法思维则是从数据处理的思路上去达成这个目标。什么是递归在数学与计算机科学中,递归 (Recursion))是指在函数的定义中使用函数自身的方法,直观上来看,就是某个函数自己调用自己。递归有两层含义:1)递归问题必须可以分解为若干个规模较小、与原问题形式相同的子问题。并且这些子问题可以用完全相同的解题思路来解决;2)递归问题的演化过程是一个对原问题从大到小进行拆解的过程,并且会有一个明确的原创 2020-07-13 23:16:36 · 8877 阅读 · 0 评论 -
重学数据结构五:数据结构基础-树和二叉树、哈希表
树树是由结点和边组成的,不存在环的一种数据结构。树满足递归定义的特性。也就是说,如果一个数据结构是树结构,那么剔除掉根结点后,得到的若干个子结构也是树,通常称作子树。1)A 结点是 B 结点和 C 结点的上级,则 A 就是 B 和 C 的父结点,B 和 C 是 A 的子结点。2)B 和 C 同时是 A 的“孩子”,则可以称 B 和 C 互为兄弟结点。3)A 没有父结点,则可以称 A 为根结点。4)G、H、I、F 结点都没有子结点,则称 G、H、I、F 为叶子结点。二叉树1)满二叉树,定义为原创 2020-07-12 00:01:04 · 7917 阅读 · 0 评论 -
重学数据结构四:数据结构基础-数组、字符串
数组我们可以把数组理解为一种容器,它可以用来存放若干个相同类型的数据元素。数组的新增操作1)第一种情况,在数组的最后增加一个新的元素。此时新增一条数据后,对原数据产生没有任何影响。可以直接通过新增操作,赋值或者插入一条新的数据即可。时间复杂度是 O(1)。2)第二种情况,如果是在数组中间的某个位置新增数据,那么情况就完全不一样了。这是因为,新增了数据之后,会对插入元素位置之后的元素产生影响,具体为这些数据的位置需要依次向后挪动 1 个位置。数组的删除操作1) 第一种情况,在这个数组的最后,删除原创 2020-07-10 22:00:29 · 13598 阅读 · 1 评论 -
重学数据结构三:数据结构基础-栈、队列
栈的基本操作如何通过栈这个后进先出的线性表,来实现增删查呢?初始时,栈内没有数据,即空栈。此时栈顶就是栈底。当存入数据时,最先放入的数据会进入栈底。接着加入的数据都会放入到栈顶的位置。如果要删除数据,也只能通过访问栈顶的数据并删除。对于栈的新增操作,通常也叫作 push 或压栈。对于栈的删除操作,通常也叫作 pop 或出栈。对于压栈和出栈,我们分别基于顺序栈和链栈进行讨论。顺序栈栈的顺序存储可以借助数组来实现。一般来说,会把数组的首元素存在栈底,最后一个元素放在栈顶。然后定义一个 top 指针来指示原创 2020-07-09 06:32:25 · 13817 阅读 · 0 评论 -
重学数据结构二:数据结构基础-线性表
一,增删查数据处理的基本操作代码对数据结构的处理是代码对输入数据进行计算,并得到结果输出的过程:数据处理的操作是找到需要处理的数据,计算结果,再把结果保存下来这个过程总结为以下操作:1)找到须处理的数据。这就是按照某些条件进行查找。2)把结果存到一个新的内存空间中。这就是在现有数据上进行新增。3)把结果存到一个已使用的内存空间中。这需要先删除内存空间中的已有数据,再新增新的数据。最后也只有3个基本操作:增、删、查线性表结构下的增删查数据结构:数据的组织方式什么是线性表线性表是 n原创 2020-07-07 22:34:23 · 13800 阅读 · 1 评论 -
重学数据结构一:代码效率优化方法论
复杂度复杂度通常包括时间复杂度与空间复杂度复杂度的计算:它与具体的常系数无关,O(n)和O(2n)表示同样同样的复杂度。复杂度相加的时候,选择高者作为结果,也就是O(nn)+O(n) 与O(nn)表示相同的复杂度。O(1)也是表示一个特殊的复杂度,即任务与算例个数n无关。时间复杂度与代码的结构设计高度相关。空间复杂度与代码中数据结构的选择高度相关。时间变空间将“昂贵”的时间复杂度转换为“廉价”的空间复杂度。假定在不限时间、也不限空间的情况下,可以完成某个任务的代码的开发这就是通常说的暴原创 2020-07-04 09:00:15 · 306 阅读 · 0 评论