• 算法复杂度


    评估算法时间复杂度的具体步骤是:

    (1)找出算法中重复执行次数最多的语句的频度来估算算法的时间复杂度;

    (2)保留算法的最高次幂,忽略所有低次幂和高次幂的系数;

    (3)将算法执行次数的数量级放入大Ο记号中

    在程序段(a)中,语句x=x+1不在任何一个循环体内,则它的时间频度为1,其执行时间是个常量;而(b)中,同一语句被重复执行n次,其时间频度为n;显然在(c)中,该语句的频度为n^2。由此,这三个程序段的时间复杂度为O(1)、O(n)、O(n^2)。分别为常量、线性阶和平方阶。

    对于较为复杂的算法,可以将它们分割成容易估算的几个部分,然后利用O的求和原则得到整个算法的时间复杂度。例如,若算法的两个部分的时间复杂度分别为T1(n)=O(f(n))和T2(n)=O(g(n)),则总的时间复杂度为:

    T(n)= T1(n)+ T2(n)=O(max(f(n), g(n)))

    然而,很多算法的运行时间不仅依赖于问题的规模,也与处理的数据集有关。例如,有的排序算法对某些原始数据(如自小至大有序),则其时间复杂度为O(n),而对另一些数据可达O(n^2)。因此,在估算算法的时间复杂度时,均以数据集中最坏的情况来估算。

    文章小结

    评估算法时间复杂度的要点是:如果一个算法的执行次数是 T(n),那么只保留最高次项,同时忽略最高项的系数后得到函数 f(n),此时算法的时间复杂度就是 O(f(n))。

  • 相关阅读:
    P1983 车站分级
    P1807 最长路
    P1347 排序
    P1073 最优贸易 (tarjan缩点+dp)
    最小费用最大流解决KM匹配问题
    CF191C Fools and Roads
    case when
    防呆机制
    DbCommand :执行超时已过期。完成操作之前已超时或服务器未响应。
    存储过程带参数和sqlcommand
  • 原文地址:https://www.cnblogs.com/caijiqi190731/p/11341185.html
Copyright © 2020-2023  润新知