首页
学习
活动
专区
圈层
工具
发布

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.append

O(1)

list.insert

O(n)

list.pop(index), default last element

O(1)

list.remove

O(n)

下一篇
举报
领券