【戏玩算法】02-时间复杂度和空间复杂度

简介: 在上一篇文章中介绍了算法和数据结构的基本概念,这篇文章来介绍一下时间复杂度和空间复杂度。
Hi~,我是 一碗周,一个在舒适区垂死挣扎的前端,如果写的文章有幸可以得到你的青睐,万分有幸~

🫐 写在前面

在上一篇文章中介绍了算法和数据结构的基本概念,这篇文章来介绍一下时间复杂度和空间复杂度。

时间复杂度和空间复杂度是衡量一个算法是否优秀的标准,通常我们比较两个算法时会用到以下两种方法:

  • 预先估算:就是说在算法设计出来之后,根据算法中的步骤,去估算这个算法所需的时间复杂度和空间复杂度,然后两个进行比较,选择更优秀的那个;
  • 事后统计:根据两个算法分别编写一个可执行程序/脚本,交给计算机去执行,分别记录两个算法所需要的时间复杂度和空间复杂度,然后两个进行比较,选择更优秀的那个。、

通常情况下我们都会采用第一种方式进行对比,因为第二种在不同环境、不同语言、不同计算机下的运行结果是有差异的,而且第二种的工作量也要比第一种要大。

🍏 时间复杂度

所谓的时间复杂度就是用于定性描述算法所运行需要花费的时间,所谓的定性就是大概进行描述一下运行时间的趋势,不会去具体到运行需要多少秒;时间复杂度通常用大O来表示,例如O(1)O(n)O(logn)等。

接下来我们通过具体的代码来展示一下时间复杂度,这样更方便去理解:

  • O(1)
let i = 0
console.log(i)
因为在这个代码中,这两行代码永远只执行一次,所以时间复杂度是`O(1)`
  • O(n)
for (let i = 0; i < n; i++) {
  console.log(i)
}
在上面的代码中,运行时间取决与`n`,所以时间复杂度是`O(n)`。
  • O(logn)
let i = 1
while (i < n) {
  console.log(i)
  i *= 2
}

如果是下面这种情况:

let i = 0
console.log(i)
for (let i = 0; i < n; i++) {
  console.log(n)
}

它的时间复杂度是O(1) + O(n),它最终的时间复杂度是O(n),两个时间复杂度相加的话一般会忽略较小的那个。

如果是两个时间复杂度相乘的话,例如下面这段代码:

for (let i = 0; i < n; i++) {
  for (let j = 0; j < n; j++) {
    console.log(j)
  }
}

这段代码的时间复杂度是O(n^2),如果是相乘的话会将两个时间复杂度进行相乘。

🍓 空间复杂度

空间复杂度与时间复杂度差不多,表示的是算法在运行过程中临时占用存储空间的大小的一个计量单位,现在我们来看一下几个例子:

  • O(1)
let i = 0
console.log(i)
因为在这个代码中,仅仅定义了一个临时变量,所以空间复杂度是`O(1)`
  • O(n)
const arr = []
for (let i = 0; i < n; i++) {
  arr.push(i)
}
在上面的代码中,我们声明了一个数组,每循环一次都要往数组中存储一个变量,所以时间复杂度是`O(n)`
  • O(n^2)
let i = 1
while (i < n) {
  console.log(i)
  i *= 2
}

写在最后

本篇文章介绍了时间复杂和空间复杂度的概念,全文内容相对较少;如果觉得有帮助,可以点赞支持一下~

本专栏采用JavaScript作为编程语言,从前端的角度去介绍数据结构与算法,如果对你所有帮助,可以点个关注支持一下啊~
目录
相关文章
|
5月前
|
机器学习/深度学习 缓存 算法
Python算法设计中的时间复杂度与空间复杂度,你真的理解对了吗?
【10月更文挑战第4天】在Python编程中,算法的设计与优化至关重要,尤其在数据处理、科学计算及机器学习领域。本文探讨了评估算法性能的核心指标——时间复杂度和空间复杂度。通过详细解释两者的概念,并提供快速排序和字符串反转的示例代码,帮助读者深入理解这些概念。同时,文章还讨论了如何在实际应用中平衡时间和空间复杂度,以实现最优性能。
119 6
|
7月前
|
机器学习/深度学习 算法 程序员
读《趣学算法》:重开算法之门,时间复杂度与空间复杂度
本文是作者阅读《趣学算法》后的笔记,介绍了算法复杂度的基本概念,包括时间复杂度和空间复杂度的不同阶表示,并通过具体例子展示了如何计算和理解算法的效率。
82 2
读《趣学算法》:重开算法之门,时间复杂度与空间复杂度
|
5月前
|
搜索推荐 算法
插入排序算法的平均时间复杂度解析
【10月更文挑战第12天】 插入排序是一种简单直观的排序算法,通过不断将未排序元素插入到已排序部分的合适位置来完成排序。其平均时间复杂度为$O(n^2)$,适用于小规模或部分有序的数据。尽管效率不高,但在特定场景下仍具优势。
|
5月前
|
机器学习/深度学习 存储 缓存
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
文章主要介绍了排序算法的分类、时间复杂度的概念和计算方法,以及常见的时间复杂度级别,并简单提及了空间复杂度。
108 1
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
|
5月前
|
机器学习/深度学习 存储 算法
【初阶数据结构】算法效率大揭秘 | 时间与空间复杂度的深度剖析
【初阶数据结构】算法效率大揭秘 | 时间与空间复杂度的深度剖析
|
5月前
|
存储 算法
算法的时间复杂度和空间复杂度
本文详细讨论了算法的时间复杂度和空间复杂度,包括它们的概念、计算方法和常见复杂度的对比,并通过多个实例解释了如何计算算法的时间和空间复杂度。
400 0
算法的时间复杂度和空间复杂度
|
6月前
|
算法 Python
震惊!Python 算法设计背后,时间复杂度与空间复杂度的惊天秘密大起底!
在 Python 算法设计中,理解并巧妙运用时间复杂度和空间复杂度的知识,是实现高效、优雅代码的必经之路。通过不断地实践和优化,我们能够在这两个因素之间找到最佳的平衡点,创造出性能卓越的程序。
68 4
|
6月前
|
缓存 算法 数据处理
时间&空间复杂度,Python 算法的双重考验!如何优雅地平衡两者,打造极致性能?
在Python算法中,时间与空间复杂度的平衡至关重要。时间复杂度反映算法执行时间随输入规模的变化趋势,空间复杂度则关注额外存储空间的需求。优秀的算法需兼顾两者,如线性搜索时间复杂度为O(n),空间复杂度为O(1);二分查找在时间效率上显著提升至O(log n),空间复杂度保持为O(1);动态规划通过牺牲O(n)空间换取O(n)时间内的高效计算。实际应用中,需根据具体需求权衡,如实时数据处理重视时间效率,而嵌入式系统更关注空间节约。通过不断优化,我们能在Python中找到最佳平衡点,实现高性能程序。
111 3
|
5月前
|
算法 C语言
深入理解算法效率:时间复杂度与空间复杂度
深入理解算法效率:时间复杂度与空间复杂度
|
3天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于生物地理算法的MLP多层感知机优化matlab仿真
本程序基于生物地理算法(BBO)优化MLP多层感知机,通过MATLAB2022A实现随机数据点的趋势预测,并输出优化收敛曲线。BBO模拟物种在地理空间上的迁移、竞争与适应过程,以优化MLP的权重和偏置参数,提升预测性能。完整程序无水印,适用于机器学习和数据预测任务。