1.1 引子
- 什么是数据结构?CS界至今无标准定义。精心选择的数据结构可以带来效率最优的算法。
1.2 数据结构
- 数据结构:
数据的对象集合、组织方式(逻辑&物理)、操作集合及实现算法。(数据的对象、组织与操作均可从逻辑和物理两方面观察,计算机处理信息的关键是将逻辑信息集映射到计算机的物理器件上形成物理器件的状态集) - 抽象数据类型(ADT):
数据的对象集合和操作集合。(抽象是计算机求解问题的基本方式及重要手段,可使一种设计对应多种应用场景)
1.3 算法
- 算法不是程序,一个显然的区别是程序可以无限运行(如操作系统), 但算法必须在有限步后终止。更重要的区别是算法是抽象的,程序是具体的。
- 算法复杂度:空间复杂度S(n)和时间复杂度T(n)。
- 精确地比较程序执行的步数无意义,因为两种算法中每步执行的时间可能不同。故在比较算法时,只考虑宏观渐进性质( 如上界T(n)=O(f(n)) )。
- 面对 O(n2)