一.有关上篇博客空间复杂度的补充
//空间复杂度由低到高排序:O(1) //计算机写法
三种写法均表示以二为底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)。














