【LeetCode修行之路】算法的时间和空间复杂度分析

发布于:2025-09-02 ⋅ 阅读:(17) ⋅ 点赞:(0)

🌈 个人主页:(时光煮雨)
🔥 高质量专栏:vulnhub靶机渗透测试
👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~)


前言

一般来说,解决问题的方法不止一种。我们需要学习如何比较不同算法的性能,并选择最佳算法来解决特定的问题。一个算法的好坏,我们可以从时间和空间两个维度去衡量。并且,一般分为两个阶段,一是算法完成前的理论分析二是算法完成后实际分析

  • 理论分析:这种算法的效率分析是通过假设所有其他因素,如处理器的速度等是恒定的,对算法的实现没有影响。
  • 实际分析:当算法实现后,我们需要考虑算法采用编程语言,然后在特定计算机上执行该算法,其消耗的时间与计算机的硬件水平相关。在此分析中,我们要收集实际的统计数据,如运行时间和所需空间。

本篇文章要讨论的主要是算法的理论分析,从常见的时间、空间复杂度入手,介绍各种时间、空间复杂度的特点,并总结一些通用数据结构、排序算法、搜索算法相关操作的时间和空间复杂度。最后,针对递归操作,使用Master Theorem来分析其复杂度。


💡一、时间、空间复杂度简介

🥭1.1.时间复杂度

时间复杂度是指执行这个算法所需要的计算工作量,其复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好地反映出算法的优劣与否。一个算法花费的时间与算法中语句的执行次数成正比,执行次数越多,花费的时间就越多。一个算法中的执行次数称为语句频度或时间频度,记为T(n),其中n称为问题的规模,当n不断变化时,它所呈现出来的规律,我们称之为时间复杂度。
比如: T ( n ) = n 2 + 1 T(n)=n^2+1 T(n)=n2+1
T ( n ) = 5 n 2 + 2 n + 1 T(n)=5n^2+2n+1 T(n)=5n2+2n+1
,虽然算法的时间频度不一样,但他们的时间复杂度却是一样的,时间复杂度只关注最高数量级,且与之系数也没有关系。通常一个算法由控制结构(顺序,分支,循环三种)和原操作(固有数据类型的操作)构成,而算法时间取决于两者的综合效率