- 博客(10)
- 收藏
- 关注
原创 [Hello 算法】列表
列表 list」是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。当使用数组实现列表时,。这是因为我们通常无法事先确定需要存储多少数据,从而难以选择合适的列表长度。若长度过小,则很可能无法满足使用需求;若长度过大,则会造成内存空间浪费。为解决此问题,我们可以使用「动态数组 dynamic array」来实现列表。它继承了数组的各项优点,并且可以在程序运行过程中进行动态扩容。实际上,
2024-01-14 17:07:38
933
1
原创 【Hello 算法】链表
内存空间是所有程序的公共资源,在一个复杂的系统运行环境下,空闲的内存空间可能散落在内存各处。我们知道,存储数组的内存空间必须是连续的,而当数组非常大时,内存可能无法提供如此大的连续空间。此时链表的灵活性优势就体现出来了。「链表 linked list」是一种线性数据结构,其中的每个元素都是一个节点对象,各个节点通过“引用”相连接。引用记录了下一个节点的内存地址,通过它可以从当前节点访问到下一个节点。链表的设计使得各个节点可以分散存储在内存各处,它们的内存地址无须连续。
2024-01-14 16:58:43
944
1
原创 [Hello 算法】数组
数组 array」是一种线性数据结构,其将相同类型的元素存储在连续的内存空间中。我们将元素在数组中的位置称为该元素的「索引 index」。图 4-1 展示了数组的主要概念和存储方式。图 4-1 数组定义与存储方式我们发现数组首个元素的索引为 0 ,这似乎有些反直觉,因为从 1 开始计数会更自然。但从地址计算公式的角度看,。首个元素的地址偏移量是 0 ,因此它的索引为 0 是合理的。
2024-01-14 16:50:02
417
1
原创 【Hello 算法】字符编码
在计算机中,所有数据都是以二进制数的形式存储的,字符char也不例外。为了表示字符,我们需要建立一套“字符集”,规定每个字符和二进制数之间的一一对应关系。有了字符集之后,计算机就可以通过查表完成二进制数到字符的转换。
2024-01-14 16:38:01
1213
1
原创 【Hello 算法】数据结构分类
相对应地,基于链表实现的数据结构也称“动态数据结构”,这类数据结构在初始化后,仍可以在程序运行过程中对其长度进行调整。物理结构从底层决定了数据的访问、更新、增删等操作方法,两种物理结构在时间效率和空间效率方面呈现出互补的特点。如图 3-2 所示,计算机根据特定规则为表格中的每个单元格分配编号,确保每个内存空间都有唯一的内存地址。值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉及地址空间、内存管理、缓存机制、虚拟内存和物理内存等概念。非线性结构则相反,呈非线性排列。
2024-01-14 16:27:02
1066
1
原创 浏览器如何渲染页面
当浏览器的网络线程收到HTML文档后,会产生一个渲染任务,并将其传递给渲染主线程的消息队列。在的作用下,开启渲染流程。。
2024-01-12 11:23:45
1472
1
原创 cannot import name ‘app_ctx‘ from ‘flask.globals‘
初学者总能遇到许多奇奇怪怪的问题,上网查还查不明白,只能自己多鼓弄。
2023-07-09 20:46:55
1764
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人