• 数据结构 1.1 初学数据结构


    一、数据结构的基本概念

    引理:数据结构在学什么?

    如何用程序代码把现实世界的问题信息化

    如何用计算机高效处理信息从而创造价值

    数据结构基本概念 

    早期的计算机——只用于处理纯数值型问题

    现代计算机——经常用于处理非数值型问题

    数据:

     

    数据元素、数据项:

    数据结构是相互之间存在一种或多种特定关系的数据元素的集合

    数据对象是具有相同性质的数据元素的集合,是数据的一个子集

    同一个数据对象里的数据元素,可以组成不同的数据结构。

    不同的数据元素,可以组成相同的数据结构

    线性数据结构——朴实无华的排行榜

    网状数据结构——复杂的朋友圈

    例题

    二、数据结构的三要素 

    1.逻辑结构

    集合

    各个元素同属于一个集合,别无其它关系。

    线性结构

    数据元素之间是一对一的关系。除了第一个元素,所有元素都有唯一的前驱,除了最后一个元素,所有元素都有唯一后继

    树形结构

    数据元素之间是一对多的关系。

    网状结构/图结构

    数据元素之间是多对多的关系

    总结

    2.数据的运算

    数据的运算:针对于某种逻辑结构,结合实际需求,定义基本运算。

    例:

     3.数据的物理结构(存储结构)

    ——如何用计算机表示数据元素的逻辑关系

    顺序存储

    把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。

    链式存储

    逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。

    索引存储

    在存储元素信息的同时,还建立附加的索引表,索引表中的每一项称为索引项,索引项的一般形式是(关键字+地址)。

    散列存储(哈希存储)

    根据元素的关键字直接计算出该元素的存储地址,又称哈希存储。

    总结

    1.若采用顺序存储,则各个数据元素在物理上必须是连续的,若采用非顺序存储,则各个数据元素在物理上可以是离散的。

    2.数据的存储结构会影响存储空间分配的方便程度。

    3.数据的存储结构会影响对数据运算的速度。

     

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

    补充:数据类型、抽象数据类型

    数据类型

    数据类型是一个值的集合和定义在此集合上的一组操作的总称。

    1>原子类型:其值不可再分的数据类型。eg、bool类型、int类型

    2>结构类型:其值可以再分解为若干成分(分量)的数据类型。eg、结构体

    抽象数据类型

    ADT,是抽象数据组织及与之相关的操作。

    三、知识回顾

    四、算法的基本概念

    1.什么是算法

    算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作

    2.算法的特性

    1.有穷性:不能是无穷的       

    2.确定性:对于相同的输入只能得到相同的输出       

    3.可行性:通过已经实现的基本运算执行有限次来实现       

    4.输入性:零个或多个输入       

    5.输出性:一个或多个输出                

    3.好的算法的特质

    1.正确性        2.可读性        3.健壮性        4.高效率和低存储量需求

    总结

    五、算法效率的度量

    算法效率的度量:

            1.时间复杂度:时间开销与问题规模n之间的关系

            2.空间复杂度:空间开销(内存开销)与问题规模n之间的关系

    1.算法的时间复杂度

    常用时间复杂度

    常对幂指阶

    如何衡量? 

    1.是否可以忽略表达式的某些部分?

            只考虑最高阶数,用大O表示法表示

    2.需要一行一行数吗?

            只考虑最深层循环的循环次数与n的关系

    总结

     2.算法的空间复杂度

    程序运行时的内存需求:

     

     空间复杂度的加法规则

     总结

  • 相关阅读:
    携载PEG-PLA纳米粒子/F3O4磁性纳米粒子/银纳米团簇基/纳米二氧化钛改性壳聚糖水凝胶
    JS垃圾回收
    C/C++:双重循环中的break
    ARM虚拟机安装OMV
    linux 分区 添加 挂载centos挂载 Microsoft basic
    【App自动化测试】(十五)手机浏览器(webview)自动化测试
    java对象与字节数组互转
    基于JAVA的农产品生鲜销售管理系统【数据库设计、源码、开题报告】
    微信页面公众号页面 安全键盘收起后键盘下方页面留白
    富芮坤蓝牙FR801xH GPIO
  • 原文地址:https://blog.csdn.net/m0_73983707/article/details/133256085