- Python 数据结构和算法教程
- Python-DS 主页
- Python-DS简介
- Python-DS 环境
- Python-数组
- Python - 列表
- Python - 元组
- Python-字典
- Python - 二维数组
- Python-矩阵
- Python - 集合
- Python - 地图
- Python - 链表
- Python-堆栈
- Python-队列
- Python-出队
- Python - 高级链表
- Python-哈希表
- Python - 二叉树
- Python - 搜索树
- Python - 堆
- Python - 图表
- Python - 算法设计
- Python——分而治之
- Python - 递归
- Python-回溯
- Python - 排序算法
- Python - 搜索算法
- Python - 图算法
- Python-算法分析
- Python - 大 O 表示法
- Python - 算法类
- Python - 摊销分析
- Python - 算法论证
- Python 数据结构和算法有用资源
- Python - 快速指南
- Python - 有用的资源
- Python - 讨论
Python-算法分析
算法的效率可以在两个不同的阶段进行分析:实施前和实施后。它们如下 -
先验分析- 这是算法的理论分析。算法的效率是通过假设所有其他因素(例如处理器速度)恒定并且对实现没有影响来衡量的。
事后分析- 这是算法的实证分析。所选算法是使用编程语言实现的。然后在目标计算机上执行此操作。在此分析中,会收集实际的统计信息,例如运行时间和所需空间。
算法复杂度
假设X是一个算法,n是输入数据的大小,算法X使用的时间和空间是决定X效率的两个主要因素。
时间因素- 时间是通过计算关键操作的数量来衡量的,例如排序算法中的比较。
空间因子- 空间是通过计算算法所需的最大内存空间来测量的。
算法的复杂度f(n)给出了算法所需的运行时间和/或存储空间,以n作为输入数据的大小。
空间复杂度
算法的空间复杂度表示算法在其生命周期内所需的内存空间量。算法所需的空间等于以下两个部分的总和 -
固定部分,是存储某些数据和变量所需的空间,与问题的大小无关。例如,使用的简单变量和常量、程序大小等。
变量部分是变量所需的空间,其大小取决于问题的大小。例如动态内存分配、递归栈空间等。
任何算法 P 的空间复杂度 S(P) 为 S(P) = C + SP(I),其中 C 是算法的固定部分,S(I) 是算法的可变部分,这取决于实例特征 I。是一个试图解释这个概念的简单例子 -
算法:SUM(A,B)
步骤 1 - 开始
步骤 2 − C ← A + B + 10
步骤 3 - 停止
这里我们有 3 个变量 A、B 和 C 以及 1 个常量。因此 S(P) = 1 + 3。现在,空间取决于给定变量的数据类型和常量类型,并且空间将相应地相乘。
时间复杂度
算法的时间复杂度表示算法运行完成所需的时间量。时间要求可以定义为数值函数 T(n),其中 T(n) 可以用步骤数来衡量,前提是每个步骤消耗恒定的时间。
例如,两个 n 位整数相加需要n步。因此,总计算时间为 T(n) = c * n,其中 c 是两位相加所花费的时间。在这里,我们观察到 T(n) 随着输入大小的增加而线性增长。