(一)数据结构——算法的事件复杂度和空间复杂度

数据结构笔记整理

第一章 绪论

1.1 数据结构的概念

1.1.1 基本概念
  1. 数据

    ​ 数据是信息的载体,是描述客观事物属性的数,字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。

  2. 数据元素

    ​ 数据元素是数据的基本单位,通常作为一个整体进行考虑和出路。一个数据元素由若干个数据项组成,数据项是构成数据元素的最小单位。

  3. 数据对象

    ​ 数据对象是具有相同性质的数据元素的集合,是数据的一个子集,例如:整数的数据对象就是一个集合。

  4. 数据类型

    • 原子类型,数值不可再进行分割。
    • 结构类型,可以分割成若干分的数据类型
    • 抽象数据类型,可以用抽象数据类型来定义一个完整的数据结构。
  5. 数据结构

    ​ 数据结构包括三个内容:逻辑结构,存储结构以及数据的运算。

1.1.2 数据结构三要素
  1. 数据的逻辑结构

    ​ 数据的逻辑结构一般分为线性结构和非线性结构

    ​ 线性结构的有:栈,队列,数组,串。

    ​ 非线性结构的有:树,图,集合。

    ​ 集合:数据中的元素同属一个集合的关系。

    ​ 线性结构:一对一的关系。

    ​ 非线性结构:一对多的关系。

    ​ 网状结构:也包多对多的关系。

  2. 数据的存储结构

    ​ 存储结构又称为物理结构,数据的存储结构主要有,顺序存储,链式存储,索引存储和散列存储。

    ​ 顺序存储:逻辑上相邻的元素物理上也相邻,优点:随机存取,每个元素占用最少的存储空间,缺点:只能使用相邻的一整块存储单元,因此有可能会产生较多的外部碎片。

    ​ 链式存储:逻辑上相邻的元素物理上不一定相邻,优点:不会出现碎片现象,能够充分利用所有的存储单元。缺点:每个元素因指针而占用了额外的存储空间,且只能实现顺序存取。

    ​ 索引存储:在存储信息的同时也建立了附加的索引表,有点就是检索速度较快,缺点就是增加了额外的索引表的存储空间,由于在增加和删除数据的时候也要修改索引表,因此会花费更多的时间。

    ​ 散列存储:根据元素的关键字直接机关出该元素的存储地址,成为hash(哈希)存储。有点就是检索,增加和删除节点的操作都很快,缺点就是如果散列函数不好的话,会出现元素存储单元的冲突,解决冲突又会增加额外的时间和空间开销。

  3. 数据的运算

    ​ 运算的定义是针对逻辑结构,指出运算的功能,运算的实现是针对存储结构,指出运算的具体操作步骤。

1.2 算法和算法概念

1.2.1算法的基本概念

​ 算法的五大特性:

  1. 有穷性,算法的每一哥步骤都在有限的时间内完成。
  2. 确定性,算法中的每条指令必须有确切的含义,对于相同的输入只能得出相同的输出。
  3. 可行性,算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
  4. 输入,一个算法有0个输入或多个输入。
  5. 输出,一个算法有一个输出或多个输出。

好的算法要考虑:

  1. 正确性,更好的解决问题。
  2. 可读性,方便人们理解。
  3. 健壮性,考虑异常方面要周到,应对异常数据的情况更强。
  4. 效率与低存储量需求,执行算法的时间和存储空间都要更小。
1.2.2算法效率的度量
  1. 时间复杂度

    用来描述算法问题规模的函数,常见的算法时间复杂度大小如下:

    O(1)<O(log2n)<O(n)<n(log2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

  2. 空间复杂度

​ 用S(n)来表示来表示算法所消耗的存储空间。除了一些必须要消耗的资源,还有一些额外辅助的存储空间都算其中。

​ 算法原地工作指的是算法所需的辅助空间为常量,即O(1)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值