《空间复杂度(C语言)》

打印 上一主题 下一主题

主题 1739|帖子 1739|积分 5217

前言

当你写出一段能“跑得起来”的C语言程序时,也许你会觉得:“OK,搞定了!”
但你有没有想过:


  • 这段程序在处理大数据量时,会不会把内存撑爆?
  • 有没有可能用了太多没必要的变量和数组,浪费了资源
  • 假如要在嵌入式系统或内存有限的装备上跑,它还能正常运行吗?
这时,我们就得引入另一个告急的概念 —— 空间复杂度(Space Complexity)
空间复杂度,简朴来说,就是分析你的程序到底“吃”了多少内存。它不但能帮助我们优化程序服从,也能制止内存泄漏、程序崩溃等一系列标题。

一、什么是空间复杂度?

在学习编程时,我们经常关心程序运行的速度,而空间复杂度关注的则是程序运行时**“占用了多少内存”**。
举个例子:
假如你写了一个程序,它在处理数据时必要开辟额外的数组、结构体、变量等存储信息,那么这些就算作了额外空间。空间复杂度就是用来权衡这部分空间使用情况的。
普通理解:

你可以把程序比作一个人在做题:


  • 他面前的试卷是输入数据(这些不算在空间复杂度里)
  • 他额外准备的草稿纸、笔、盘算器就是辅助空间(这些要算)
空间复杂度,关注的就是:这个人必要准备多少张草稿纸?

二、空间复杂度的数学定义

空间复杂度一般用大写的 O 符号表示,例如:


  • O(1):常数空间,只用很少的变量
  • O(n):线性空间,比如要开一个数组来存储 n 个元素
  • O(n^2):平方空间,常见于二维数组或矩阵标题
我们不关心精确的字节数,只看输入规模 n 增加时,额外内存的增长趋势

三、常见空间复杂度举例(含C语言代码)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表