时间复杂度
代码运行的时间,代码中循环次数太多或嵌套多层,运行时间就不好估算。我们可以把核心操作次数和输入规模关联起来。
两个算法:
存在一个输入规模N,当N逐渐增大时
- 算法的时间复杂度与算法函数的常数没有关系
- 算法的时间复杂度与算法函数的最高次项有关系,其它项可以忽略
- 算法的时间复杂度与算法函数的次项没有关系
时间复杂度可以使用大O记法,用程序核心执行次数来表示程序运行时间
- 用常数1取代运行时间中所有加法常数
- 在修改后的运行次数中,只保留高阶项
- 最高阶项存在,且常数因子不为1,则去除与这个项相乘的常数
时间复杂度
O(1)<O(logn)<O(n)<O(nlogn)
<O(n^2)
< O(n^3)
<O(2^n)
空间复杂度
一个对象,64位系统中对象头占16个字节。
对于一个数组,64们系统中对象头占16个字节,长度占4字节。以8字节进行补齐,所以占24字节