数据结构:时间复杂度空间复杂度

embedded/2024/11/13 3:07:30/

专栏说明:本专栏用于数据结构复习,文章中出现的代码由C语言实现,在专栏中会涉及到部分OJ题目,如对你学习有所帮助,可以点赞鼓励一下博主喔💓


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:数据结构专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

数据结构:时间复杂度空间复杂度

目录

  • 数据结构:时间复杂度空间复杂度
    • 1. 算法的复杂度
    • 2. 大O的渐进表达式
    • 3. 时间复杂度
      • 3.1 概念
      • 3.2 常见时间复杂度举例
    • 4. 空间复杂度
      • 4.1 概念
      • 4.2 常见空间复杂度举例
    • 5. 时间复杂度存在最好、平均和最坏情况
    • 6. 常见复杂度对比


1. 算法的复杂度

算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度空间复杂度

时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。

2. 大O的渐进表达式

大O符号(Big O notation):是用于描述函数渐进行为的数学符号。

推导大O阶方法:

  1. 用常数1取代运行时间中的所有加法常数。
  2. 在修改后的运行次数函数中,只保留最高阶项。
  3. 如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。

3. 时间复杂度

3.1 概念

算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。

一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。

3.2 常见时间复杂度举例

查看文章:数据结构入门 — 时间复杂度、空间复杂度


4. 空间复杂度

4.1 概念

空间复杂度是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度

空间复杂度计算规则基本跟实践复杂度类似,也使用大O渐进表示法。

函数运行时所需要的栈空间(存储参数、局部变量等)在编译期间已经确定好了。
因此空间复杂度主要通过函数在运行时候显式申请的额外空间来确定。

4.2 常见空间复杂度举例

查看文章:数据结构入门 — 时间复杂度、空间复杂度


5. 时间复杂度存在最好、平均和最坏情况

最坏情况:任意输入规模的最大运行次数(上界)
平均情况:任意输入规模的期望运行次数
最好情况:任意输入规模的最小运行次数(下界)

注意:在实际中一般情况关注的是算法的最坏运行情况

6. 常见复杂度对比

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


http://www.ppmy.cn/embedded/136430.html

相关文章

每日一题——第一百二十一题

题目&#xff1a;找到一串字符串中最长的单词&#xff0c;打印单词&#xff0c;并打印其长度和开始的索引下标 #pragma once#include<stdio.h> #include<stdbool.h> #include<ctype.h> #include<string.h>//找到一串字符串中最长的单词&#xff0c;打…

Linux的目录结构 | 命令的认识 | 相对路径 | 绝对路径 | 常用命令(一)

文章目录 1.Linux的目录结构2.命令的认识3.相对路径和绝对路径4.常用命令&#xff08;目录文件操作&#xff09;5.常用命令&#xff08;文本查看&#xff09; 1.Linux的目录结构 \ &#xff1a;根目录 root&#xff1a;root用户的工作目录 home&#xff1a;普通用户的工作目录 …

前端零基础学习Day-Eight

CSS字体和文本样式 CSS文字样式 字体&#xff1a;font-family 语法&#xff1a;font-family:[字体1][,字体2][,...] p{font-family:"微软雅黑","宋体","黑体";} 含空格字体名和中文&#xff0c;用英文引号括起 属性值&#xff1a;具体字体名&…

CTF-RE 从0到N: 迈向混淆代码分析的第一步!分析控制流扁平化后的代码!

Control Flow Flattening&#xff08;控制流扁平化&#xff09;是一种代码混淆技术&#xff0c;主要用于提高程序的安全性&#xff0c;防止逆向工程和代码分析。它通过改变程序的控制流结构&#xff0c;使得代码的执行路径更加复杂和难以理解。具体来说&#xff0c;这种技术会将…

分享:文本转换工具:PDF转图片,WORD转PDF,WORD转图片

前言 鉴于网上大多数在线转换工具要么需要收费&#xff0c;要么免费后但转换质量极差的情况&#xff0c;本人开发并提供了PDF转图片&#xff0c;WORD转PDF&#xff0c;WORD转图片等的文本转换工具。 地址 http://8.134.236.93/entry/login 账号 账号&#xff1a;STAR001&a…

CV图像处理小工具——语义分割json生成检测框json

语义分割json生成检测框json import json import os from os import listdir, getcwd from os.path import join import os.pathrootdir F:/dataset/# 写自己存放图片的数据地址 input_dir F:/dataset/labels_json/ output_dir F:/dataset/labels_box/ def position(pos):# …

【MATLAB代码】二维平面上的TDOA,使用加权最小二乘法,不限制锚点数量,代码可复制粘贴

本文所述的MATLAB代码实现了一个基于两步加权最小二乘法的二维目标定位算法,利用多个锚点(基站)和时间差到达(TDOA)数据来估计未知目标的位置。 订阅专栏后可以看到完整代码,复制到MATLAB空脚本上面即可直接运行。若需要单独下载,可通过下面的链接:https://download.cs…

机器学习与大数据处理有何关系

一、机器学习的定义 机器学习&#xff08;Machine Learning, ML&#xff09;是人工智能的一个分支领域&#xff0c;它专注于让计算机系统通过自动地从数据中学习并改进其性能&#xff0c;以执行特定任务&#xff0c;而无需进行显式的编程。机器学习的核心思想是使用数据来训练…