首页
学习
活动
专区
圈层
工具
发布

《数据结构与算法》O(3N)=O(N)?

教训 时间复杂度和空间复杂度都是用大写的 "O" 表示。...在学习算法效率的时候一般会把O(3N)≈O(N),N的常数倍都直接约等于O(N)。这也是约等于,不是完全相等。实际编程设计时特别是在一些效率要求较高的程序设计一定要考虑进去,不能约等于。...在高并发的请求下,O(3N)和O(N)是有着天壤之别的。 我在工作中遇到的一个实例,差点背了事故。...一个高并发的场景下(qps在5k左右),我写了一个O(3N)的程序,测试时逻辑没问题,结果没问题,没有对该场景进行高并发压测,就上线了。...错误的把O(3N)=O(N)的算法上线了。把算法优化为O(N)之后,经过一番压力测试完全没问题。这次事件对我一个很大的启示是,高并发的场景下,O(3N)≠O(N),一定不能等于。

72740

时间复杂度o(1), o(n), o(logn), o(nlogn)

1、时间复杂度o(1), o(n), o(logn), o(nlogn)。算法时间复杂度的时候有说o(1), o(n), o(logn), o(nlogn),这是算法的时空复杂度的表示。...O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。 2、时间复杂度为O(1)。...再比如时间复杂度O(n^2),就代表数据量增大n倍时,耗时增大n的平方倍,这是比线性更高的时间复杂度。 比如冒泡排序,就是典型的O(n^2)的算法,对n个数排序,需要扫描n×n次。...4、时间复杂度为O(logn)。 当数据增大n倍时,耗时增大logn倍(这里的log是以2为底的,比如,当数据增大256倍时,耗时只增大8倍,是比线性还要低的时间复杂度)。...对数函数,如果a^x =N(a>0,且a≠1),那么数x叫做以a为底N的对数,记作x=logaN,读作以a为底N的对数,其中a叫做对数的底数,N叫做真数。 5、时间复杂度为O(nlogn)。

1.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【转】算法中时间复杂度概括——o(1)、o(n)、o(logn)、o(nlogn)

    在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度。这里进行归纳一下它们代表的含义:这是算法的时空复杂度的表示。...O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。 比如时间复杂度为O(n),就代表数据量增大几倍,耗时也增大几倍。比如常见的遍历算法。...再比如时间复杂度O(n^2),就代表数据量增大n倍时,耗时增大n的平方倍,这是比线性更高的时间复杂度。比如冒泡排序,就是典型的O(n^2)的算法,对n个数排序,需要扫描n×n次。...再比如O(logn),当数据增大n倍时,耗时增大logn倍(这里的log是以2为底的,比如,当数据增大256倍时,耗时只增大8倍,是比线性还要低的时间复杂度)。...二分查找就是O(logn)的算法,每找一次排除一半的可能,256个数据中查找只要找8次就可以找到目标。 O(nlogn)同理,就是n乘以logn,当数据增大256倍时,耗时增大256*8=2048倍。

    1.7K10

    OSPF技术连载22:OSPF 路径选择 O > O IA > N1 > E1 > N2 > E2

    优选路径列表是O > O IA > N1 > E1 > N2 > E2。 路径类型 优先级顺序 区别和特点 区域内 (O) 第一 在同一区域内的路径,基于链路成本选择最短路径。...区域间 (O IA) 第二 用于跨越不同区域的路径,提高网络可扩展性。 NSSA 类型 1 (N1) 第三 在特殊区域内连接外部网络,考虑到成本。...NSSA 类型 2 (N2) 第五 在特殊区域内连接外部网络,仅考虑区域内成本。 外部类型 2 (E2) 第六 仅考虑区域内成本,用于简化路由计算。...NSSA Type 2 (N2) NSSA Type 2(N2)路径选择与N1路径选择类似,但适用于NSSA区域内部。...在这种情况下,N2路径选择仅考虑区域内链路的成本,不考虑到达NSSA内外部网络的成本。 N2路径选择适用于那些需要在NSSA区域内连接外部网络的情况。

    57241

    从O(n²)到O(n log n):深度剖析快速排序的内存优化与cache-friendly实现

    从O(n²)到O(n log n):深度剖析快速排序的内存优化与cache-friendly实现 Hello,我是摘星! 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。...图1:快速排序分治过程示意图1.2 复杂度理论分析快速排序的性能特征呈现出鲜明的对比性:情况类型时间复杂度空间复杂度发生条件最佳情况O(n log n)O(log n)每次分割接近平衡平均情况O(n log...n)O(log n)随机数据分布最坏情况O(n²)O(n)数组已排序或逆序"算法的优雅之处不在于避免最坏情况,而在于让最坏情况变得不太可能发生。"...n log n)O(n log n)*O(log n)❌⭐⭐⭐⭐⭐通用排序归并排序O(n log n)O(n log n)O(n)✅⭐⭐⭐稳定排序需求堆排序O(n log n)O(n log n)O(1...从最初的O(n²)理论最坏复杂度,到通过精心优化实现稳定的O(n log n)性能,这一过程体现了计算机科学中理论与实践完美结合的典型案例。

    30110

    GitHub Copilot 协作:算法复杂度从 O(n²) 降到 O(log n) 的优化实录

    通过与Copilot的协作,我成功将算法复杂度从O(n²)优化到O(log n),查询性能提升了99.7%,从30秒缩短到100毫秒以内。...KMP算法 - O(n+m)# 2. Boyer-Moore算法 - 平均O(n/m)# 3. Rabin-Karp算法 - 平均O(n+m)# 4....2.2 算法方案对比分析基于Copilot的建议,我设计了详细的算法对比:算法名称时间复杂度空间复杂度预处理时间适用场景实现难度暴力搜索O(n²)O(1)无小数据集⭐KMP算法O(n+m)O(m)O(m...)单次查询⭐⭐⭐Boyer-MooreO(n/m)O(σ)O(m+σ)长模式⭐⭐⭐⭐后缀数组O(log n)O(n)O(n log n)多次查询⭐⭐⭐⭐⭐哈希索引O(1)O(n)O(n)频繁查询⭐⭐⭐考虑到我们的场景是多次查询同一数据集...n²)优化到O(log n) # 约束:内存使用不超过原来的2倍 pass# 4.

    25910

    数据结构与算法 基础排序(O(n^2))

    易错点 不能直接找到一个比minIndex小的就swap,因为交换后比较的就是minIndex和后一个元素2个元素的比较 而不是minIndex和后面所有元素比较 4....复杂度分析 首先有2层循环: 第一层,从0-length依次选取待排序的元素 第二次,将待排序的元素与后面的所有元素比较,选择后面所有元素中最小的元素,然后交换 所以时间复杂度为 O(n^2)...没有开辟新的空间,所以空间复杂度为O(1) 插入排序 ?...再抓第三张牌(i=2)后,先和第二张(i=1)比较,小于,交换,在和i=0比较,小于再交换,此时第三张牌之前的元素都是有序的。...2.png 完成第一轮排序 ? 3.png 第二轮循环 ? 4.png 完成第二轮排序 ?

    47110

    经典 O(n²)比较类排序算法

    排序算法 时间复杂度 是否基于比较 冒泡、插入、选择 O(n²) 是 快排、归并 O(nlog~n~) 是 桶、计数、基数 O(n) 否 十种常见的的排序算法可以分两大类: 比较类排序:通过比较来决定元素的相对次序...2. 时间复杂度的系数、常数、低阶 我们知道,时间复杂度反应的是数据规模 n 很大的时候的一个增长趋势,所以它表示的时候会忽略系数、常数、低阶。.../** * 冒泡排序: 时间复杂度 O(n²),最坏时间复杂度 O(n²),最好时间复杂度 O(n),平均时间复杂度 O(n²) * 空间复杂度 O(1),稳定排序算法 */ public class...(ps:都已经是正序了,还要你冒泡何用) 最坏时间复杂度: 数据是倒序的,我们需要进行 n 次冒泡操作,所以最坏情况时间复杂度为 O(n2)。...代码如下所示: /** * 插入排序:时间复杂度 O(n²),平均时间复杂度 O(n²),最好时间复杂度 O(n), * 最坏时间复杂度 O(n²),空间时间复杂度 O(1).稳定排序算法。

    75420

    使用 Python 可视化 O(n)

    常用的时间复杂度类 O(n) 表示输入大小和执行时间之间的线性关联。 定义 计算机科学中的算法复杂性是对资源(例如时间和空间利用率)的评估,这些资源是根据其输入大小操作算法所需的。...用于描述算法复杂性的主要表示法是大O表示法(O(n))。...其中“n”表示迭代次数。 在 O(n) 时间复杂度中,随着输入大小 'n' 的增加,执行时间成比例增长。随着“n”的增加,迭代次数和完成循环所需的时间将成比例增加。...假设算法表现出 O(n) 的时间复杂度,我们可以近似地认为,在绘制图表时,输入大小和执行持续时间之间将存在几乎直线的相关性。...方法 2:绘制运算与输入大小的关系 例 import matplotlib.pyplot as plt def algo_ops(n):     ops = 0     sum = 0     for

    61710
    领券