Skip to content

介绍

约 663 字大约 2 分钟

2019-06-09

概述

算法 ,顾名思义,即计算的方法。

算法通常用于解决特定的计算任务,但与可以直接在计算机上运行的程序不同,算法使用数学化的描述,更加侧重于思想,可以被看作抽象的程序。 同一个算法可以有许多种不同的实现方式,两个不同的程序里也可能使用了同一种算法。

复杂度

时间复杂度空间复杂度 是衡量一个算法效率的重要标准。

基本操作数

同一个算法在不同的计算机上运行的速度会有一定的差别,并且实际运行速度难以在理论上进行计算, 实际去测量又比较麻烦,所以我们通常考虑的不是算法运行的实际用时,而是算法运行所需要进行的基本操作的数量。

在普通的计算机上,加减乘除、访问变量(基本数据类型的变量,下同)、给变量赋值等都可以看作基本操作。

对基本操作的计数或是估测可以作为评判算法用时的指标。

时间复杂度

衡量一个算法的快慢,一定要考虑数据规模的大小。 所谓数据规模,一般指输入的数字个数、输入中给出的图的点数与边数等等。一般来说,数据规模越大,算法的用时就越长。

我们衡量一个算法的效率时,最重要的不是看它在某个数据规模下的用时, 而是 看它的用时随数据规模而增长的趋势,即 时间复杂度

当然,算法的运行用时并非完全由输入规模决定,而是也与输入的内容相关。所以,时间复杂度又分为几种,例如:

  • 最坏时间复杂度,即每个输入规模下用时最长的输入对应的时间复杂度。在算法竞赛中,由于输入可以在给定的数据范围内任意给定,我们为保证算法能够通过某个数据范围内的任何数据,一般考虑最坏时间复杂度。
  • 平均(期望)时间复杂度,即每个输入规模下所有可能输入对应用时的平均值的复杂度(随机输入下期望用时的复杂度)。

空间复杂度

类似地,算法 所使用的空间随输入规模变化的趋势 可以用 空间复杂度 来衡量。