您的位置:首页 > 理论基础 > 数据结构算法

python数据结构学习笔记-2016-10-05-01-抽象数据类型(一)

2016-10-05 00:37 681 查看
        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改变时,无需更新代码;
利于分解成小模块,便于团队分工合作。                 
         1.1.3 数据结构
          抽象数据类型分为简单抽象数据类型和复杂抽象数据类型。
          简单抽象数据类型(simple ADT):由一个或几个数据字段组成。比如说日期和随机数。
          复杂抽象数据类型(complex ADT):是一个数据值的集合。比如说python的列表和字典。
          数据结构(data structure):数据如何组织和操作的物理表示。比如说数组、线性表、堆栈、队列和树等。
          
          1.1.4 一般定义
          集合(Collection):一组两两不相关的值。
          容器(Container):任何可储存和组织集合的数据结构或ADT。其中包含的每个值可称为元素。没有任何值的容器成为空容器。比如说python提供的字符串、列表、元组、字典和集合都是容器。
          序列(Sequence):一个元素按照线形顺序从前往后排列的容器,其中的每一个元素可通过相应的位置来访问。
          生成列表(general list)或列表结构(list strcture):含一定顺序的集合。注意序列肯定是生成列表或列表结构,但是生成列表或列表结构不一定是序列。因为在定义中,没有要求可通过位置访问相应元素。此外,还要注意其与python中提供的列表的区别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息