空间复杂度和时间度的概念

来源:互联网 发布:sql正则 编辑:程序博客网 时间:2024/06/05 08:41

算法的概念大家都知道,就是定义一个计算过程,取一个或一组数据作为输入,经过系列的运算步骤,得到另外一个或一组输出,也就是用来将输入数据转化为输出数据;那么我们如何来衡量一个算法呢,或者是使用哪些指标来衡量呢,这样我们就引入另外两个概念,时间复杂度和空间复杂度;

1、时间复杂度:它是一个函数,定量地表述了算法占用的时间,时间复杂度使用大写O表示,时间复杂度需要分析一个算法在运行过程中的基本操作,计量所有操作的数量,
假设一个基本的操作在一个固定的时间内完成,那么该算法的总运行时间和总操作量,无非就是常量系数的关系。有时对于大小相同的输入,效率也是不同的,因为系数不同;因此常对最坏时间复杂度进行分析,对于给定大小的任何输入,某个算法的最大运行时间记为T(n),通常根据T(n)对一个算法的时间复杂度进行分类,例如T(n)=O(n)我们称起具有线性时间,再例如:T(n)=O(n^3),称其具有指数时间;
渐进复杂度:时间复杂度是渐进的,它考察当输入值趋于无穷大时的情况,例如一个算法对于任意一个输入n,它最多需要8n^3+10*n的时间才能运行完毕,那么它的渐进复杂度为O(n^3);
 具体定义:一般情况下,算法中基本操作的次数 是问题规模n的某个函数,用T(n)来表示,若有某个辅助函数f(n),使得n趋于无穷大时,T(n)/F(n)的极限值为不等于零的常数,则成F(n)是T(n)的同量级函数,记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度(O是数量级的符号 ),简称时间复杂度。
2、空间复杂度:计算一个算法占用的存储空间,一般是输入参数的函数,是衡量一个算法优劣的重要指标,空间复杂度越小,效率越高,占用存储空间越小;
接下来会介绍常用数据结构及算法实现;