刷算法题的准备工作——算法时间复杂度的计算(粗略)
快要找工作了,题库得赶紧刷起来了。先刷一些算法题。
那么如何评价算法的好坏呢?
算法嘛,当然是要算法效率越高越好,一般情况下,我们只考虑让算法的时间复杂度尽量小。
时间复杂度,一般也不需要精确计算其表达式,我们只需要让其尽量小即可。一般用大写的O来表示。比如O(n),O(n2)等。
决定一个算法时间复杂度的主要因素是算法中执行次数最多的语句。所以判断算法时间复杂度可以简化为以下三步:
1.找到算法中执行次数最多的语句;
2.计算语句执行次数的数量级;
3.去掉计算结果中的常数项系数,然后用大写O来表示结果。
例如:
public static void main (String[] args){ int num=1; for(int i=0; i<n; i++){ for(int j=0; j<=i; j++){ num+=num; } } }
随便写了一个双层循环来举例,
1.首先找到执行次数最多的语句num+=num;
2.然后计算该语句的执行次数;1+2+3+...+n=n*(n-1)/2
3.得出该算法的时间复杂度为O(n2)
先就这样,接下来开始刷题。