首页 > 其他 > 详细

时间复杂度

时间:2019-10-27 17:34:55      阅读:87      评论:0      收藏:0      [点我收藏+]

时间复杂度

  • 时间空间复杂度分析 --> 不使用具体测试数据,粗略估计算法执行效率。不依赖测试环境、效率高、易操作、指导性强。

大O时间复杂度

  1. 表示代码执行时间随数据增长的变化趋势 --> 时间复杂度。

  2. 计算时忽略低阶、常量、系数,只考虑最高阶量级。

  3. 一个算法的时间复杂度,是其量级最高的代码段的复杂度。

  4. 嵌套代码的时间复杂度是其内外代码时间复杂度的乘积。

O(1) :代码中不存在循环、递归等语句

O(logn) O(nlogn):

    > i = 1;
    >
    > while (i<=n){ 
    > ?     i *= 2;
    > ? }
  • 变量取值为等比数列,最终i为n,2的指数为log2n,时间复杂度o(log2n)。
  • 对数可以相互转换,所有对数阶时间复杂度均为O(logn)。
  • O(logn)的代码循环了n次,时间复杂度便是O(nlogn)。例如:快速排序。

O(m+n),O(m*n):

  • m,n表示两个数据规模,无法比较谁更大时,采用m+n或者m*n。

  • 前者为两个循环分开,后者为两个循环嵌套。

    还有O(n),O(n^2),O(n^3),O(n!)等等,后边的非多项式阶在数据规模增加时,时间和空间占用骤增,性能极差:阶乘阶、指数阶等。

ps:xbyz:最简单的时间复杂度分析/计算方法是凭感觉。小菜:???

空间复杂度:分析类似时间复杂度,找最大的空间占用代码段。

最好、最坏、均摊、平均时间复杂度

  • 最好:最理想情况下的代码时间复杂度。
  • 最坏:最糟糕情况下的代码时间复杂度。
  • 平均:最理想和最糟糕的情况发生概率不高,在平均情况下就有了它,计算各种情况下的加权平均值。
  • 均摊:真正的“平均”时间复杂度!(特殊的平均时间复杂度and摊还分析)
  • emm:以上四个时间复杂度中前三个不需要区分,后两个都有其特殊的使用场景、情况。

时间复杂度

原文:https://www.cnblogs.com/honey-cat/p/11748013.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!