萌新的学习笔记,写错了恳请斧正。
目录
复杂度
复杂度是衡量算法好坏的一种方式。一般分为时间复杂度和空间复杂度,分别用于衡量一个算法在运行时间长短和占据内存空间多少两方面的优劣。
一般我们考察复杂度就是找到相关的代数式,将常数全部忽略,将非最高次项全部忽略,在用括号括起来,前面写一个大O。这就是复杂度的大O表示法。
比方说,对于代数式3N^2+2N+4,我们只取N^2;对于2N+4M+1,我们只取M+N。
(未知数的选用是随意的)
至于这个代数式如何找到,且看下方。
时间复杂度
时间复杂度的表达式就是算法执行基本语句的次数与未知量之间的代数关系(一般考虑最坏情况下的关系)。
比方说下面这一个函数,不含未知数,其基本语句的运行次数是常数次,时间复杂度就是O(1)。
void function()
{
for (int i = 0; i < 114514; ++i)
{
print("%d\n", i);
}
}
而下面这个函数含有未知数,循环中的代码段要运行N次,那么时间复杂度就是O(n)。
void function(int n)
{
for (int i =