算法核心——空间复杂度和时间复杂度超详细解析
算法核心——空间复杂度和时间复杂度超详细解析 一、什么是算法 算法 : 一个有限指令集 接受一些输入(有些情况下不需要收入) 产生输出 一定在有限步骤之后终止 每一条指令必须: 有充分明确的目标,不可以有歧义 计算机能处理的范围之内 描述应不依赖于任何一种计算机语言以及具体的实现手段 其实说白了, 算法 就是 一个计算过程解决问题的方法 。我们现在已经知道 数据结构 表示 数据是怎么存储的 ,而“ 程序 = 数据结构 + 算法 ”,数据结构是 静态 的,算法是 动态 的,它们加起来就是 程序 。 对算法来说 有输入,有输出 ,相当于 函数 有 参数 有 返回值 。我们写算法的时候习惯把算法 封装 到一个函数中。 二、什么是好的算法 好,从上面我们知道了什么是 算法 ,下面我再说什么是 好的算法 ? 在解决同一个问题的时候,我们通常会有很多种不一样的算法,区别就在于,有的算法比较笨,有的算法比较聪明,那我们怎么去衡量它们谁好谁坏呢?我们通常有下面两个指标: 空间复杂度 :根据算法写成的程序在执行时占用存储单元的长度。 时间复杂度 :根据算法写成的程序在执行时耗费时间的长度。 先举个例子说,如果让你打印十个整数,你那个程序可能瞬间就给出结果了,如果让你打印十万个整数呢?这你就得多等一会了。所以这个程序运行的时间,就跟你要处理的数据是十个还是十万个是相关的,这个 十 或 十万