zoukankan      html  css  js  c++  java
  • 刷算法题的准备工作——算法时间复杂度的计算(粗略)

    快要找工作了,题库得赶紧刷起来了。先刷一些算法题。

    那么如何评价算法的好坏呢?

    算法嘛,当然是要算法效率越高越好,一般情况下,我们只考虑让算法的时间复杂度尽量小

    时间复杂度,一般也不需要精确计算其表达式,我们只需要让其尽量小即可。一般用大写的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)

    先就这样,接下来开始刷题。

  • 相关阅读:
    pat 1034 Head of a Gang (30分)
    pta坑点
    Devc++ 编译 c++11
    Invitation Cards dijkstra法
    Cube Stacking
    畅通工程
    蚂蚁上树
    洛谷 P1439 【模板】最长公共子序列
    Recursive sequence
    A Simple Math Problem
  • 原文地址:https://www.cnblogs.com/shengguilv/p/12769204.html
Copyright © 2011-2022 走看看