算法

本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务。算法是独立存在的一种解决问题的方法和思想。

我们所分析的算法的时间复杂度都是指最坏时间复杂度

数据结构

数据是一个抽象的概念,将其进行分类后得到程序设计语言中的基本类型。如:int,float,char等。

数据元素之间不是独立的,存在特定的关系,这些关系便是结构。数据结构指数据对象中数据元素之间的关系。

Python的内置数据结构,比如列表、元组、字典。(定义好的)

Python的扩展数据结构,比如栈,队列等。(未定义好的)

和list比较,dict有以下几个特点:

查找和插入的速度极快,不会随着key的增加而变慢;

需要占用大量的内存,内存浪费多。

而list相反:

查找和插入的时间随着元素的增加而增加;

占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法

程序 = 数据结构 + 算法

数据运算有五种:插入

删除

修改

查找

排序

线性表的实际存储方式,分为两种实现模型:顺序表,将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示。

链表,将元素存放在通过链接构造起来的一系列存储块中。

list就是一种采用分离式技术实现的动态顺序表。这就是为什么用list.append(x) (或 list.insert(len(list), x),即尾部插入)比在指定位置插入元素效率高的原因。

队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。

排序与搜索

排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定顺序进行排列的一种算法。

搜索是在一个项目集合中找到一个特定项目的算法过程。搜索通常的答案是真的或假的,因为该项目是否存在。 搜索的几种常见方法:顺序查找、二分法查找、二叉树查找、哈希查找。