数据结构与算法
仲夏余四
这个作者很懒,什么都没留下…
展开
-
数据结构与算法之美【总结笔记】 -- 队列
先进先出,就是典型的“队列”。队列只支持两个基础操作:入队enqueue(),放一个数据到队尾,和,出队dequeue()从队列头部取一个元素。队列和栈一样,也是一种操作受限的数据结构。队列可以用数组实现,也可以用链表实现。用数组实现的队列叫顺序队列,用链表实现的队列叫链式队列。在实现队列这中数据结构的时候,需要两个指针,一个head指针,指向队头,一个tail指针,指向队尾。...原创 2020-01-31 13:40:46 · 133 阅读 · 0 评论 -
数据结构与算法之美【总结笔记】 -- 栈
当某个数据集合只涉及一段插入和删除数据,并且满足后进先出、先进后出的特性,我们就应该首选“栈”这种数据结构。如何实现一个栈:栈即可以用数组来实现,也可以用链表来实现,实现push和pop方法。入栈和出栈的时间复杂度为O(1),空间复杂度为O(1)对于支持动态扩容的栈,起均摊时间复杂度和空间复杂度也是O(1)栈在函数调用中的应用:函数调用栈:操作系统给每个分配了一块独立的...原创 2020-01-10 10:39:32 · 107 阅读 · 0 评论 -
数据结构与算法之美【总结笔记】 -- 链表 - 如何写出正确链表代码
1.深入理解指针或者引用,java中为引用,即理解下面的话将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量的内存地址,指向了这个变量,通过这个指针就能找到这个变量。2.警惕指针丢失和内存泄漏(c,c++)在进行插入和删除的操作的时候,操作的都是指针,而指针又很抽象,代码不规范的话,极容易出现逻辑异常,指针丢失的...原创 2020-01-02 23:34:44 · 144 阅读 · 0 评论 -
数据结构与算法之美【总结笔记】 -- 链表
链表与数组是想对的一种数据结构链表的特点为:内存不连续,每个节点存有下一节点的地址(双向链表还需要存储前一节点的地址),以头结点的地址作为链表的基地址,尾节点指向空地址。延伸:尾节点指向头结点,形成循环链表。每个节点存储前一结点的地址,形成双向链表。每个节点存储前一结点的地址,尾结点指向头结点,形成循环双向链表。因为每个节点都需要额外的空间存储下一节点的地址,所有链表所占的空间更大,但...原创 2020-01-01 17:46:02 · 158 阅读 · 0 评论 -
数据结构与算法之美【总结笔记】 -- 数组
数组是一种线性的数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。数组中存储的数据,地址是连续的,所以支持随机性访问时间复杂度为O(1);由于需要保持地址的连续性,所以在对数组进行插入和删除的时候,需要对目标数据之后的所有数据进行地址移动的操作,此操作的时间复杂度,最好是O(1),最坏是O(n),平均是O(n)。针对此问题可采取的解决办法举例:插入操作:如果此数组...原创 2020-01-01 15:05:10 · 128 阅读 · 0 评论 -
数据结构与算法之美【总结笔记】 -- 复杂度分析
1.为什么进行复杂度分析不同运行环境下,由于硬件的不同、软件版本的不同,并发数不同等待原因,同一代码的运行时间可能相差极大,所以,测试环境下的运行效率虽然直观,但是不能完全信任,所以还需要可靠的理论来支撑。时间复杂度和空间复杂度的分析,就是对于代码运行效率的抽象,不受运行环境影响,只面向巨大的数据量分析,具有极高的价值。2.复杂度的表示方法大 O 复杂度表示法因为无法知道每一行...原创 2019-12-31 23:04:51 · 139 阅读 · 0 评论