python数据结构以Data Structure and Algorithms Using Python为书本。
算法(Algorithm):为在有限时间内解决某个问题的一系列清晰精确的、按顺序执行的指令集。
1.1 简介
数据项(Data items):在计算机中以一系列二进制数字表示。
类型(type):一系列值的集合
数据类型(data type):包含给定的类型和一些能操纵这一类型的值的操作。
基类型(primitives):一般程序语言都会提供的数据类型。包括简单数据类型和复杂数据类型。
简单数据类型(simple date types):其中包含的值以大多数的基本形式表示,并且不能再细分成更小的部分。
复杂数据类型(complex data types):其中包含的组件由简单数据类型或复杂数据类型组成。
用户定义类型(user-defined types):基类型可能无法满足解决一些大型复杂问题,需要允许用户自己定义相应的新类型来满足需求。
1.1.1 抽象
抽象(Abstraction):忽略对象与当前目标不相关性质并着眼于与当前目标相关的属性。
抽象分为过程抽象和数据抽象。
过程抽象(procedural abstraction):在使用函数或方法时,只关注这一函数或方法是干什么的,而忽略它是怎么实现的。
数据抽象(data abstraction):从数据类型的实现中分理出的相应属性(值和操作)。(不理解)
抽象层次
最低层是硬件,这一层基本没有抽象。只包含值的二进制表示和执行运算的逻辑回路。
往上一层是汇编语言,这一层抽象出了整数和运算(加减?)。
再往上一层是高级语言,这一层的抽象是,提供基类型来储存整数和一系列已定义的运算。
但是大多数高级语言提供的整数是有一定限度的,比如说32位计算机体系中,其范围是-2^31至2^31-1。要想实现更大范围的整数表示,就要借助软件层来实现。(大致理解)
1.1.2 抽象数据类型
抽象数据类型(Abstract data type, ADT):它是由程序员定义的一种数据类型,包括一些指定数据值与相关已定义的操作。
我们可以不用特地去关心抽象数据类型的实现,而是着眼于抽象数据类型的使用。
接口(interface)促使了抽象数据类型的使用与实现的分离。这也被称之为信息隐藏(information hiding)。
一般而言,抽象数据类型所包含的操作可以分为四类
- 构造器:构造和初始化抽象数据类型的实例;
- 访问器:返回实例中的数据;
- 修改器:修改实例中的内容;
- 迭代器:遍历所有数据。
使用抽象数据类型的好处
- 着眼与解决眼前的问题,以免陷入具体细节实现的困难;
- 减少逻辑错误的产生?
- 当使用的ADT改变时,无需更新代码;
- 利于分解成小模块,便于团队分工合作。