时间和空间复杂度
2019-04-14 本文已影响3人
zhengqiuliu
数据结构和算法可以分开理解,数据结构主要是让系统能用更省的空间来存储更多的数据,算法主要解决系统快速计算缩短响应时间。所以学习数据结构和算法这门课程的目的就是为系统节省空间,缩短时间。
如何评估节省的时间,继而引出的时间复杂度的概念。
时间复杂度:不是精确评估系统具体消耗多少时间,而是建立一种评估消耗时间的规则。具体规则为执行代码所消耗时间跟数据量增长的一种渐变关系。
时间复杂度T(N) = O(f(N)),表示的只是一种渐变关系,所以只需要记录循环次数最多的那段代码的时间复杂度即可,可以忽略常数项,低阶项和系数。
常见的时间复杂度有如下几种:
O(1), O(logn), O(n), O(nlogn), O(n^2), O(n^k), O(2^N), O(n!)
O(2^n) 和 O(n!) 属于非多项式量式,复杂度随着n的增大会急剧增加。
常见时间服务度渐变大小关系:O(1) < O(logn) < O(n) < O(nlogn) < O(n^2)
空间复杂度:表示算法的存储空间与数据规模之间的增长关系。
常见的空间复杂度:O(1), O(n), O(n^2)