1.时间复杂度与空间复杂度概要

一、 算法时间复杂度
  • 符号:O(f(n))
  • 含义:某个算法需要执行的指令数的量级
  • 定义:
    • 学术界:算法执行上界
    • 工业界:算法执行的最低上界
  • 注意点:通常算法时间复杂度与算法所处环境有关,如插入排序最差情况为O(n^2),最好情况为O(1),但一般所说的插入排序的时间复杂度为O(n^2)是平均情况(绝大多数情况下的复杂度),快速排序同理,最差为O(n^2),最好情况为O(nlogn),而平均情况为O(nlogn),这也就表示为快速排序的平均情况。
二、空间复杂度:
  • 符号:O(f(n))
  • 含义:算法运行过程中额外开辟的空间的大小
  • 注意点:当有递归时,还需要考虑递归所占的空间,因为需要保存断点以及临时变量,通常来说,递归本身所需的空间复杂度为O(递归深度)
三、数据规模:
  • 条件:运行10^8个指令需要一秒(通常来说),所以如果需要在1秒内执行完毕某个算法,
  • 当一个算法是O(n^2),数据规模必须小于10^4,而由于每个数据的执行指令通常大于1,所以一般来说,当数据规模小于10^3时,才能保证一定能在1秒内执行完毕某个算法。
  • 当一个算法是O(nlogn),数据规模必须小于10^7,而保险来看,数据规模必须小于10^6。
  • 而当一个算法是O(n),数据规模必须小于10^8,而保险来看,数据规模必须小于10^7。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章