解决一个问题时,我们可以想到很多不同的方法,进而产生了不同的很多代码,在都能正确解决问题的前提下,一般用时间/空间复杂度来衡量一个代码的质量高低。
关于时间复杂度和空间复杂度的问题,我们可以看这篇文章,对于这两个概念介绍得很清楚:(4条消息) 时间复杂度和空间复杂度(超详细)_霜迟Boan的博客-CSDN博客_时间复杂度和空间复杂度 OK,了解了这两个概念后,我们还需要知道,我们平常所说的渐进增长阶的概念:渐进增长阶常用来表示算法程序运行消耗的时间与空间。所以我们就明白了,增长阶其实就是一个程序或者算法时间和空间复杂度的简单统称。因为我们在执行一段程序时,通常会有判断、循环等结构出现,判断或循环的次数会随着实际情况( counter n)改变,换句话说,随着判断、循环等次数的增加,程序的所执行的时间和执行过程中所占的空间一般也会增大,这就需要渐进增长阶(时间/空间复杂度)来描述。
下面,我们就利用之前我们提到的 两种常用排序方法 的例子,(链接如下)
(4条消息) C语言最常用的2种排序方法_Endorphin、舟的博客-CSDN博客
来说明一下这两种算法的时间和空间复杂度:
1.选择排序法:
时间复杂度:O(n^2)
空间复杂度:O(1)
2.冒泡排序:
时间复杂度:最好的情况(顺序)O(n) /最坏的情况(逆序)O(n^2)
空间复杂度:O(1)