美文网首页
时间复杂度分析

时间复杂度分析

作者: 陈桐Caliburn | 来源:发表于2020-03-23 09:46 被阅读0次

算法意义在于在时间和空间中找出最优解

O(f(n)) 表示算法执行的上界
O 表示算法执行的最低上界

O(nlogn + n) = O(nlogn)
O(nlogn + n^2) = O(n^2)
表示规模n一样

O(AlogA+B)
O(AlogA+B^2)

因为A和B并无关系 所以影响规模变量要单独表示出来

排序算法 默认O(nlogn)

经典字符串排序

题目:有一个字符串数组,将数组中的每一个字符串按照字母序排序;之后将整个字符串数组按照字典序排序。整个操作时间复杂度?

解答:
假设最长字符串长度为s;数组中有n个字符串
对每个字符串排序:O(slogs)
将数组中每一个字符串按照字母序排序:O(n*slog(s))
将整个字符串数组按照字典序排序:O(s* nlog(n))
两次时间相加:
O(n*slog(s)) + O(s* nlog(n)) = O(n*slog(s) + s* nlog(n))
                             =O(sn(logs + logn))

算法复杂度,参考平均情况

数据规模
1s内解决问题
O(n^2) 10^4
O(n) 10^8
O(nlogn) 10^7

空间复杂度
开出多大辅助空间

辅助一个数组 O(n)
二维数组(n^2)
常数空间O(1)

递归调用是有空间代价
递归的深度deep

递归函数时间复杂度
O(T*depth)

均摊复杂度分析

动态数组

防止复杂度震荡

相关文章

  • 复杂度分析

    为什么需要复杂度分析? 大O复杂度表示法 时间复杂度分析 常见复杂度量级 复杂度量级简单说明 空间复杂度 时间复杂...

  • 针对封装数组的简单复杂度分析

    完成了数组的封装之后我们还需对其进行复杂度分析:此处的复杂度分析主要是指时间复杂度分析,算法的时间复杂度反映了程序...

  • map:169.求众数(投票算法)

    求众数 哈希Map 复杂度分析 时间复杂度:O(N) 空间复杂度: O(N) 投票算法 复杂度分析

  • 一个好的算法如何测评

    一个算法的好坏可以根据复杂度分析来测评. 复杂度分析包括时间复杂度和空间复杂度. 1.时间复杂度 需要考虑: 1)...

  • 常用java算法理解时间复杂度与空间复杂度

    常用的算法的时间复杂度和空间复杂度: 排序法 最差时间分析 = 平均时间复杂度 = 稳定...

  • 递归树——借助树来求解递归算法的时间复杂度

    递归代码的时间复杂度分析起来非常麻烦,今天我们尝试来借助递归树分析递归算法的时间复杂度。 1. 递归树与时间复杂度...

  • 时间复杂度和空间复杂度笔记

    复杂度分析笔记 复杂度主要分为时间和空间复杂度 时间复杂度:算法(程序)执行的时间变化趋势 空间复杂度:算法(程序...

  • 两数之和 - Rust

    采用 HashMap 记录减少时间复杂度: 复杂度分析空间复杂度: O(N):主要是记录 hash 值。时间复杂度...

  • 算法复杂度

    算法复杂度 算法复杂度的目的:分析代码执行的时间成本。我们从五个方面来介绍算法复杂度:时间复杂度、时间复杂度分类、...

  • 数据结构与算法 复杂度分析

    复杂度:时间复杂度和空间复杂度。复杂度的分析是学习数据结构与算法的基础! 极简概述 复杂度的分析已经有很多很好...

网友评论

      本文标题:时间复杂度分析

      本文链接:https://www.haomeiwen.com/subject/njzdyhtx.html