mirror of
https://github.com/krahets/hello-algo.git
synced 2025-07-25 11:13:38 +08:00
Add summary for the chapters of introduction, hashing, heap, graph, sorting
This commit is contained in:
@ -4,8 +4,7 @@
|
||||
- 数组支持随机访问、内存空间占用小;但插入与删除元素效率低,且初始化后长度不可变。
|
||||
- 链表可通过更改指针实现高效的结点插入与删除,并且可以灵活地修改长度;但结点访问效率低、占用内存多。常见的链表类型有单向链表、循环链表、双向链表。
|
||||
- 列表又称动态数组,是基于数组实现的一种数据结构,其保存了数组的优势,且可以灵活改变长度。列表的出现大大提升了数组的实用性,但副作用是会造成部分内存空间浪费。
|
||||
|
||||
## 数组 VS 链表
|
||||
- 下表总结对比了数组与链表的各项特性。
|
||||
|
||||
<div class="center-table" markdown>
|
||||
|
||||
@ -18,9 +17,11 @@
|
||||
|
||||
</div>
|
||||
|
||||
!!! tip
|
||||
!!! question "缓存局部性的简单解释"
|
||||
|
||||
「缓存局部性(Cache locality)」涉及到了计算机操作系统,在本书不做展开介绍,建议有兴趣的同学 Google / Baidu 一下。
|
||||
在计算机中,数据读写速度排序是“硬盘 < 内存 < CPU 缓存”。当我们访问数组元素时,计算机不仅会加载它,还会缓存其周围的其它数据,从而借助高速缓存来提升后续操作的执行速度。链表则不然,计算机只能挨个地缓存各个结点,这样的多次“搬运”降低了整体效率。
|
||||
|
||||
- 下表对比了数组与链表的各种操作效率。
|
||||
|
||||
<div class="center-table" markdown>
|
||||
|
||||
|
Reference in New Issue
Block a user