数据结构之空间复杂度、顺序表

本文详细介绍了空间复杂度的排序及计算方法,强调了空间复杂度并不直接衡量字节使用,而是关注算法运行中额外占用的内存空间。通过多个示例说明了不同情况下的空间复杂度,如常量空间O(1)、线性空间O(N)等,并解释了递归对空间复杂度的影响。此外,还提到了顺序表的概念及其优缺点,特别是动态顺序表的增删查改操作。
摘要由CSDN通过智能技术生成

一.有关上篇博客空间复杂度的补充

//空间复杂度由低到高排序:O(1)<O(logN)<O(N)<O(N*logN)<O(N^2)<O(2^N)<O(N!)

//计算机写法

三种写法均表示以二为底N的对数。

二.空间复杂度

空间复杂度与时间复杂度是相同的,都是一种函数式。

空间复杂度并不计算占用多少字节的空间(不同计算机不同软件设置的默认对齐数是不相同的),而是计算算法运行过程中临时(或者是额外)占用空间大小的量度。通俗的讲,空间复杂度是计算变量的个数。

空间复杂度的计算同样遵循大O渐进法。

例1:

除参数外,额外创建的变量有end、i、 exchange。该程序的空间复杂度为O(1)

为什么变量i、exchange占用空间大小计量单位为1,而不是N呢?

因为空间是可以共用的,没有必要重复计算。也就是说变量i 、exchange相当于占有一间房屋,当他们自身变换,比如说穿着、妆容不同时,这间房屋仍旧是一间并且还是原来的属于他们各自本身的那间房屋。

例2:

由于递归,要不断地开辟函数栈帧,每一次调用该函数都会创建一块空间。从Fac(N)调用至Fac(0)会开辟N+1块空间。即该程序的空间复杂度为O(N)。 

例3:

 即该程序的空间复杂度为O(N)。 

例4:

该程序的空间复杂度准确值为N+2,表示为O(N)

例5:

该程序的空间复杂度为O(N)。

讲解如下:

所以,要看递归的空间复杂度,往往要看递归的深度。

空间是可以重复使用的,不可以累计。创建空间,好比租房。释放空间,好比退房。时间是一去不复返,是不可以累计的。 

 //补充一些计算机专业常用的单位转换:

1byte=8bit

1kb=1024byte

1mb=1024kb

1gb=1024mb

1tb=1024gb

三.顺序表

1.顺序表的概念:

顺序表是用一段 物理地址连续 的存储单元依次存储数据元素的线性结构,一般情况下采用数组存
储。
特别注意:顺序表中数据存储是连续的。

2.静态顺序表声明

3.动态顺序表声明

4.动态顺序表达的增删查改

头文件

 相关函数的.c文件

 

 

5.顺序表的缺点:

1.顺序表增容,会浪费时间和空间

2.顺序表头部或者中间插入,时间复杂度为O(N)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值