Python数据结构与算法笔记(1)

ADT

参考:

01_抽象数据类型和面向对象编程

数据结构与算法--ADT

ADT

ADT(abstract data type)是由用户定义的数据类型,它制定了一组数据值的集合及可作用在这些数据值上的一组操作。ADT的定义与它的具体实现无关,因此只关注如何使用它,无需关注它的具体实现。

ADT可以被看做一个黑盒子。用户程序与ADT实例的交互是通过调用定义在ADT接口上的操作进行的。操作集可以分为4类:

  • Constructors:创建和初始化ADT的实例
  • Accessors:返回实例中的数据,而不进行修改
  • Mutators:修改ADT实例的内容
  • Iterators:逐个处理单个数据组件

数据结构

ADT将定义与实现进行了分离。自定义的ADT必须要有一个实现,而实现ADT时我们所做出的选择会影响实现的功能和效率。

数据结构可以通过以下两方面来描述:

1. 它们如何存储和组织单个数据元素

2. 提供哪些操作来存取和处理其上的数据

常用术语定义

  • collection:集合,指一组数据值,单个数据值之间没有隐含的组织关系
  • container:容器,指存储和组织一个集合的数据结构或者ADT。集合中的单个数据值称为容器的元素(element),当容器中没有元素时,称容器为空(empty),Python中容器的例子有:string,tuple,list,dict,set
  • sequence:序列,是一种容器,该同期的元素按线性排列,并且每个元素能通过其位置访问(即通过下标访问)。Python中的序列例子:string、tuple、list
  • sorted sequence:有序序列,元素的位置基于每个元素的前后元素的某种预定关系确定。

数组和列表

参考:

数组和列表

数组array

数组是最常用的一种线性结构,其实python内置了一个array模块,但是大部分人甚至从来没用过它。Python的array是内存连续、存储的都是同一数据类型的结构,而且只能存储数值和字符。

常用的是numpy.array

列表List

操作平均时间复杂度
list[index]O(1)
list.appendO(1)
list.insertO(n)
list.pop(index), default last elementO(1)
list.removeO(n)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值