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


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

    //空间复杂度由低到高排序: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)。

  • 相关阅读:
    JDK1.5后增加了泛型,那么为什么要有泛型呢?我们该如何自定义泛型结构呢?
    Day1跟李沐学AI-深度学习课程00-04【预告、课程安排、深度学习介绍、安装、数据操作+数据预处理】
    was下log4j设置日志不输出问题
    【优化求解】整数规划求解机票超售优化赔付问题【含Matlab源码 2182期】
    Android热修复1
    ios safari 正则兼容问题
    自定义通知栏显示不全、heads-up通知栏的应用
    MySql的开发环境
    国产CPU发展情况及信创服务器性能测试对比
    网络基本结构及数据传输方式
  • 原文地址:https://blog.csdn.net/shizhongruyi0606/article/details/126098784