数据结构绪论部分

  • 一,相关概念
    • 1,数据(DATA):各种符号的集合 分为:①数值型数据 实数等 ②非数值型数据 文字图象等
    • 2,数据元素(DATA element)数据的基本单位,在计算机中通常作为一个整体进行考虑和处理,别名为元素,顶点,记录,结点。
    • 3,数据项(DATA item)是构成数据元素的不可分割的最小单位
    • 小结:数据>数据元素>数据项
    • 4,数据对象(DATA object)是性质相同的数据元素的集合,是数据的一个子集
  • 二,数据结构
    • 1,数据结构是相互之间存在一种或多种特定关系的数据元素的集合,包括:①逻辑结构 ②存储结构 ③数据运算
    • 2,逻辑结构的种类
      • 划分方法一:
      • 划分方法二:
    • 3,存储结构的分类
      • 1,顺序存储结构: 将数据元素存放在地址连续的存储单元中,其数据间的逻辑关系与物理关系一致。
      • 2,链接存储结构: 将数据元素存放在任意的存储单元中,这组存储单元之间通过链接的方式建立起来。(C语言中用指针实现链式存储结构)
      • 3,索引存储结构: 在存储数据元素的同时,还建立附加的索引表。
      • 4,散列存储结构: 根据元素的关键字直接计算出该元素的存储地址,又称哈希存储结构。
    • 4,数据类型(DATA type):
      • 是指一个值的集合和定义在这个值集上的一组操作的总称。 作用: 1,数据类型决定了数据对象取值范围 2,数据类型决定了数据对象所能进行的操作
      • 抽象数据类型(Abstract data type,ADT 定义格式如下:
    •     ADT 抽象数据类型名{
          数据对象:
          数据关系:
          基本操作:
          }ADT 抽象数据类型名
    •     操作名(参数表)
          初始条件:
          操作结果:
      • 基本操作的定义格式说明
      • 概念小结
      • 三,算法效率(时间效率和空间效率)

        + 1,两种度量方法:

          + ①事后统计方法:

            通过设计好的测试程序和数据,利用计算机计时器对不同算法的运行时间进行比较。

          + ②事前分析估算法:

            在计算机程序编写前,依据算法所处理的数据规模大小和算法实现所消耗的时间资源、空间资源等,对算法进行估算。

        + 2,算法运行时间=一个操作所需时间(假设均为单位时间)×算法中该操作重复执行的次数(语句频度)

          算法执行时间约等于语句频度总和

        + 3,两个n*n矩阵相乘算法效率分析

          ```c

            for(i=1;i<=n;i++)  //n+1

                for(j=1;j<=n;j++)  //n*(n+1)

                    for(k=1;k<=n;k++) //n*n*(n+1)

                        c[i][j]+=a[i][k]*b[k][j];//n*n*n

            ```

            算法耗费时间等于每条语句频度之和

        T(n)=(n+1)+n*(n+1)+n*n*(n+1)+n*n*n=n^3+3n^2+2n+1

        + 4,算法的渐进时间复杂度(O是数量级符号)

          简称时间复杂度(T(n)的数量级)

          + 1,忽略低次幂项和最高次幂系数

          + 2,

          + 3,对于复杂的算法,可以分为几个部分,利用加法和乘法法则计算时间复杂度

            + 加法法则

            :T(n)=T1(n)+T2(n)  取两个函数中数量级最大的

            + 乘法法则

            :T(n)=T1(n)*T2(n)  数量级为两个函数的乘积

          + 4,时间复杂度T(n)按数量级递增顺序为

            O(1)<O(log2n)<O(n)<O(nlog2n)<O(n^2)<O(n^3)<O(2^n)<O(n!)

        + 5,渐进空间复杂度(S(n)的数量级)

          + 1,空间复杂度S(n)分析

            + 1,算法原地工作:算法所需 Workspace 的空间为常量,O(1)

            + 2,递归算法的空间复杂度:递归深度n*每次递归调用所需空间

            + 3,循环工作算法的空间复杂度:循环中使用的变量所占空间

          + 2,空间复杂度S(n)按数量级递增顺序为

            O(1)<O(n)<O(n^2)<O(n^3)<O(2^n)<O(n!)

            例子:

           

           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值