04 2021 档案
摘要:散列表的由来 前面说了数组、链表,他们各自有自己的特点: 数组:具有随机访问的特点,可以快速的根据下标访问到数据,缺点是插入、删除需要移动数据 链表:插入、删除只需要改变结点之间的引用,缺点是查找数据需要从根结点遍历访问 散列表是组合了数组和链表的优势,规避它们的不足而产生新的一种数据结构。散列表是
阅读全文
摘要:栈 栈是一种特殊的的线性表结构,只允许在一端插入和删除操作。允许插入和删除的一端是栈顶,另一端是栈底,不包含任何数据的叫空栈,栈具有后进者先出(Last in first out)简称LIFO,栈的操作主要有入栈、出栈 如 线性表、链表都是线性结构中的一种,只是存储方式不一样,叫不同的名称。 实现栈
阅读全文
摘要:链表 标准数组是一块连续的内存地址,所以在做插入、删除时会对数据进行大量的移动,如果数据量很大那么效率会比较低。如果我们把每一个元素都记录着下一个元素的地址,那我们在做插入、删除时是不是只需要改变下一个元素的地址即可, 如 从存储结构来看链表不需要一块连续的内存空间,它通过“指针”将一组零散的内存块
阅读全文
摘要:线性结构 线性结构是一个有序数据元素的集合,数据之间的关系是1:1 的关系如: 平时常用的线性结构有数组、线性表、栈、队列 如。 什么是数组 数组是计算机分配一块连续的内存空间,来存储具有相同元素类型的数据。数组具有随机访问的特点,这个特点有利有弊,比如可以根据数组下标快速的访问元素,但是要想在数组
阅读全文
摘要:为什么需要复杂度分析 我们可以把代码跑一遍,然后通过一些工具来统计、监控就能得到算法执行的时间和占用的内存大小。为什么还要做时间、空间复杂度分析呢?这种分析方法能比我实实在在跑一遍得到的数据更准确吗? 首先,肯定的说这种评估算法执行效率的方法是正确的。很多数据结构和算法书籍还给这种方法起了一个名字,
阅读全文