编程珠玑(第二版)阅读笔记04

第10章 节省空间

使程序变得更加简单,网络传送数据时所需要的时间通常直接与数据的规模呈正比

关键在于简单
简单性可以衍生出功能性、健壮性以及速度和空间

数据空间技术
不存储,重新计算。牺牲更多的运行时间来换取更小的空间。对于许多跨网络运行的程序来说,在数据规模方面我们最关心的是传输数据需要花费的时间。有时我们会采纳“保存、不进行重新传输”的建议,通过本地缓存的方式减少需要传输的数据量。
稀疏数据结构。使用指针来共享大型对象
数据压缩
分配策略
垃圾回收

代码空间技术:函数定义,解释程序,翻译成机器语言

空间开销,空间度量,
折中(有时程序员必须牺牲程序的性能、功能和可维护性以获得内存)
与环境协作,使用适合任务的正确工具

 


第11章 排序

插入排序,一种简单的快速排序,更好的集中快速排序

 


第12章 取样问题

解决现有的问题是程序员任务的一部分,另一个也许更重要的部分是做好解决未来问题的准备

编程过程中几个重要步骤:
正确理解锁遇到的问题
提炼出抽象问题
考虑尽可能多的解法
实现一种解决方案
回顾

 


第13章 搜索

五种表示集合的重要数据结构
有序数组、有序链表、二叉树、箱、位向量

库的作用,空间的重要性,代码调优方法

 


第14章 堆

二叉树是一个堆
第一个性质是顺序:任何结点的值都小于或等于其子结点的值。
第二个性质是形状:尽可能靠左分布。树中不存在空闲的位置,如果它有N个结点,那么所有结点到根结点的距离都不超过log2N

两个关键函数 siftup siftdown

优先级队列

高效性,形状性质保证了堆中所有结点和根结点之间相差的层数在log2n之内。
正确性,形状和顺序性质是另一种不变式。
抽象性
过程抽象
抽象数据类型

 


第15章 字符串

散列,平衡树,后缀数组

posted @ 2020-03-28 19:03  _Aming  阅读(97)  评论(0编辑  收藏  举报