1.1 什么是数据结构

一、基本概念

1.数据:信息的载体,指能够被计算机识别、存取、处理以及计算机程序加工和处理的“原料”。(eg:字符串、图像、声音等)

2.数据项:具有独立含义的最小标识单位。(eg:字段、域、属性等)

3.数据元素:数据的基本单位。(一个数据元素可由多个数据项组成)

4.数据对象:性质相同的数据元素的集合,是数据的一个子集。(eg: 26个字母构成的字符集合)

5.数据结构:互相之间存在一种或多种特定关系的数据元素的集合。(即数据的组织形式)

二、数据结构的内涵

1. 数据的逻辑结构

(1)根据“数据元素之间关系的不同特性”,分为以下四类逻辑结构:

  • 集合:集合的逻辑结构中所有数据元素“杂乱无章”的地聚集在一起,各数据元素之间没有联系;
  • 线性结构:逻辑结构中的数据元素存在“一对一”的关系,各数据元素之间有严格的先后次序;
  • 树形结构:逻辑结构中的数据元素存在“一对多”的关系,各数据元素之间有严格的层次关系;
  • 图状结构:逻辑结构中的数据元素存在“多对多”的关系,各数据元素之间均可能存在相互联系。

(2)根据“数据元素之间结点的前后相邻关系”,分为以下两类逻辑结构:

  • 线性结构:若线性结构是非空集,则有且仅有一个开始开始结点和一个终端结点,所有结点都最多只有一个直接前驱结点和一个直接后继结点。(eg: 线性表、栈、队列、串等都是线性结构)
  • 非线性结构:一个结点可能有多个直接前驱和直接后继。(eg: 树、图等都是非线性结构)

2.数据的存储结构
(1)数据的存储结构(即物理结构):指数据在计算机中的存储表示,包括数据元素的表示和关系的表示。
(2)数据的存储结构,分为以下四种基本存储方法:

  • 顺序存储: 把逻辑上相邻的结点存储在物理位置上相邻的存储单元中,结点间的逻辑关系由“存储单元的邻接关系”来体现。
  • 链接存储:不要求逻辑上相邻的结点在物理位置上也相邻,结点之间的逻辑关系由“附加的指针字段”表示。
  • 索引存储:通常在存储结点信息的同时,建立附加的索引表。(索引表由多个索引项组成。若一组结点在索引表中只对应一个索引项,该索引表称为“稀疏索引”。若每个结点在索引表中都有一个索引项,则该索引表称为“稠密索引”)
  • 散列存储:根据结点的关键字直接计算出该结点的存储地址。
三、数据类型和抽象数据类型

(1) 数据类型:指一个值的集合和定义在这个值的集合上的一组操作的总称。

     按“值”的不同特性,在高级程序语言中可分为两种类型:1.原子类型:原子类型的值不可分解。(eg:C语言中的整型、字符型、枚举型、指针类型、空类型等)2.结构类型:结构类型的值是由若干个成分(结构成分或者非结构成分)按某种结构组成的,可以分解。(eg:数组的值由若干分量组成,每个分量可能是整数或者是数组)

(2)抽象数据类型(ADT):指一个数学模型以及定义在该模型上的一组操作。

     抽象数据类型的定义仅取决于它的一组逻辑特性,无论计算机内部结构如何变化,只要它的数学特性不变,都不会影响其外部的使用。抽象数据类型可表示为一个三元组(D,R,P),其中“D”表示“数据对象”,“R”是“D”上的关系集,“P”是对“D”的基本操作集。

1.2 算法和算法分析

一、算法的描述

1.算法:为了解决某一类问题而设计的一个有限长的操作序列。
2.一个算法必须满足以下5个重要特性

  1. 有穷性:算法对于任意合法的输入值,在执行有限步之后一定能结束;
  2. 确定性:算法中的每一个操作必须有确切的含义,无二义性,并在任何条件下,算法都只有一条执行路径。
  3. 可行性:算法中的所有操作都可通过已经实现的基本运算有限次地实现。
  4. 输入:算法具有零个或多个输入,这些输入为一组特定的数据对象集合。
  5. 输出:算法具有一个或多个输出,它是一组与“输入”有确定关系的量值。
二、算法设计的要求

算法设计要注意算法的四个要求:“正确性”、“可读性”、“健壮性”、“时空效率”

三、算法分析

(1) 时间复杂度:算法中每条语句的执行时间之和。由于每条语句的执行时间是该语句重复执行的次数或频率,与该语句执行时间的乘积,而语句的执行时间又与机器性能、编译程序等诸多因素有关,难以统一和确定。

一般而言,算法中基本操作的频率是问题规模n(eg:算法所处理的矩阵的阶数、线性表的长度)的某个函数f(n),“算法的时间量度”记作“T(n)=O(f(n))”,它表示随问题规模n的增大,算法的执行时间增长率与f(n)的增长率相同。

(2)空间复杂度:算法在执行时需要占用一定的存储空间,这些空间除了包括程序、输入数据、常数、变量所占的空间之外,还包括算法对输入数据进行运算以及为实现运算所需信息的额外空间。

  算法的时间复杂度,一般以“空间复杂度”作为算法所需存储空间的量度,记作“S(n)=O(f(n))”,其中n表示问题的规模或者大小。

数据结构——简要概述相关推荐

  1. 「翻译」SAP零售预测和补货–简要概述

    SAP零售预测和补货–简要概述 总体目标和适用范围 SAP Forecasting and Replenishment(F&R)是专门为零售商门店和配送中心的高效补货而创建的解决方案.其主要目 ...

  2. drill apache_Apache Drill 1.4性能增强的简要概述

    drill apache 今天,我们很高兴地宣布,MapR发行版中现已提供Apache Drill 1.4. 钻1.4是MAPR生产就绪和支持的版本,可以从下载这里 ,找到1.4版本说明这里 . Dr ...

  3. Apache Drill 1.4性能增强的简要概述

    今天,我们很高兴宣布Apache Drill 1.4现已在MapR发行版中可用. 钻1.4是MAPR生产就绪和支持的版本,可以从下载这里 ,找到1.4版本说明这里 . Drill 1.4以其高度灵活和 ...

  4. jsp 内置的对象的简要概述(转)

    JSP 内置对象简要概述 (1) HttpServletRequest 类的 Request 对象 作用:代表请求对象,主要用于接受客户端通过 HTTP 协议连接传输到服务器端的数据. (2) Htt ...

  5. 记住密码 的 简要概述_密码错误的简要历史

    记住密码 的 简要概述 IT强制的密码策略似乎是一个好主意-毕竟,攻击者有机会在八字符字符串(至少包含一个大写字母,一个低个字母)中的7.82亿个潜在组合中猜出您的确切密码字母,两个数字和一个符号? ...

  6. MOOS-ivp 实验十四(2)behavior简要概述

    MOOS-ivp 实验十四(2)behavior简要概述 继续上一章的内容,对行为使命进行进一步的介绍和参数配置工作. 文章目录 MOOS-ivp 实验十四(2)behavior简要概述 前言 一.简 ...

  7. HashMap的实现原理(简要概述)

    HashMap的实现原理(简要概述) 基于哈希算法实现的,它通过put存储,通过get取值. 当传入一个key时,HashMap会根据key.hashCode()计算出哈希值,然后根据这个哈希值将va ...

  8. SpringMVC简要概述

    SpringMVC简要概述 SpringMVC简要概述 SpringMVC简要概述 一.MVC 1.MVC简介 2.MVC三层架构分析 3.MVC框架使用机制 二.SpringMVC 1.Spring ...

  9. Spring 核心方法 refresh 刷新流程简要概述及相关源码扩展实现(二)

    前言 registerBeanPostProcessors initMessageSource 如何实际应用国际化处理 initApplicationEventMulticaster onRefres ...

最新文章

  1. 闲鱼亿级商品结构化背后的思考和演进
  2. 湖北沙洋中学2021年6月高考成绩查询,2021年荆门中考分数线公布填报志愿时间及录取结果什么时候出...
  3. 如何知道自己的研究课题是不是领域热点?
  4. sql长整型_SQL性能优化,太太太太太太太有用了!
  5. 使用DSX2-5000 CH测试时选择(+PoE)和(+All)后缀的含义
  6. [BUGKU][CTF][Reverse][2020] Reverse writeup 1-7 暂时肝不动了
  7. 非关型数据库之MongoDB
  8. 白盒测试 | 用例设计方法之条件覆盖
  9. 掌握了这30道MySQL基础面试题,我成了面霸
  10. Android学习——写个小实例
  11. sql不同数据处理方式完成同一处理结果对日志增长的影响
  12. (python初学者)利用python画简单几何图形
  13. FAT,FAT32,NTFS
  14. 什么是OsmocomBB
  15. windows系统运行uniapp到ios基座
  16. linux下的网络音乐播放器,Linux_Songbird离开后 Linux下可以替代它的10个音乐播放器推荐,正如我们早先提到的一样, Son - phpStudy...
  17. 绘制cos和sin图表
  18. Android画个颜色渐变的圆环玩玩
  19. 开发FireFox浏览器扩展(Extension)并实现与原生应用之间的消息传递
  20. 群联PS2251-67成功量产教程

热门文章

  1. 【MACCMS】UA判断 展示判断
  2. 用递归求i的平方,再求和
  3. APP界面设计:移动缺省页如何设计才会内容“丰富友好”?
  4. JavaScript基础学习、复习笔记
  5. android 动画 重影,CSS3 演示运动过程中的模糊重影
  6. 申请Office 365一年免费的开发者账号攻略
  7. vue-cli2.9.6及其他版本升级至vue-cli4.x最新版
  8. 风铃发卡网源码最新版-可商用
  9. 倒车灯E-mark认证的流程是怎样的?
  10. 《一点财经》编辑部严正声明