算法的时间复杂度和空间复杂度
最近在研究数据结构与算法,在B站中找到了小甲鱼的《数据结构与算法课程》,挺有意思的! (小甲鱼)数据结构和算法 对于一个算法来说,分析有两步,第一是从数学上证明算法的正确性,第二步是分析算法的时间复杂度。 算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能反映出算法的优劣与否。 度量一个程序的执行时间通常有两种方法。 一、事后统计的方法 该方法有两个缺陷: 1、要想对设计的算法的运行性能进行评测,必须先依据算法编制相应的程序并实际运行; 2、所得的统计量依赖于计算机的硬件、软件等环境因素,有时容易掩盖算法本身的优势。 二、事前分析估算的方法 一个用高级语言编写的程序在计算机上运行时所消耗的时间取决于下列因素: 算法采用的策略、方法; 编译产生的代码质量; 问题的输入规模; 机器执行行指定的速度; 一个算法是由控制结构(顺序、分支和循环)和原操作(指固有数据类型的操作)构成的,则算法时间取决于两者的综合效果。为了便于比较同一个问题的不同算法,通常的做法是,从算法中选取一种对于所研究的问题(或算法类型)来说是基本操作的原操作,以该基本操作的重复执行的次数作为算法的时间量度。 三、时间复杂度 1、时间频度 一个算法执行所消耗的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试 ,只需知道哪个算法花费的时间多