【数据结构与算法】—算法与算法分析(一)

简介: 数据是能输入计算机且能被计算机处理的各种符号的集合;是信息的载体,是对客观事物符号化的表示;能够被计算机识别,存储和加工

【数据结构与算法】—算法与算法分析(一)

一、数据

数据是能输入计算机且能被计算机处理的各种符号的集合;是信息的载体,是对客观事物符号化的表示;能够被计算机识别,存储和加工

数据包括:数值型的数据和非数值型的数据

数值型的数据:整数、实数。

非数值型的数据:文字、图像、图形、声音等。

二、数据元素


数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

2345_image_file_copy_48.jpg

数据元素也简称为元素、或者称为记录、结点或顶点。


三、数据项

数据项是构成数据元素的不可分割的最小单位。

2345_image_file_copy_49.jpg

数据、数据元素、数据项三者之间的关系

2345_image_file_copy_50.jpg

四、数据对象

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

2345_image_file_copy_51.jpg

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

数据结构包括以下三个方面的内容:

  • 数据元素之间的逻辑关系,也称为逻辑结构
  • 数据元素以及关系在计算机内存中的表示(又称为映像),称为数据的物理结构或者数据的存储结构

数据的运算和实现,即对数据元素可以试驾的操作以及这些操作在相应的存储结构上的表现。

五、数据结构的两个层次

逻辑结构

  • 描述数据元素之间的逻辑关系
  • 与数据的存储无关,独立于计算机

是从具体问题抽象出来的数据模型

物理结构

数据元素以及其关系在计算机存储器中的结构(存储方式);是数据结构在计算机中的表示

逻辑结构与存储结构的关系

存储结构是逻辑关系的映像与元素本身的映像

逻辑结构是数据结构的抽象,存储结构是数据结构的实现

六、 逻辑结构的种类

线性结构:有且仅有一个开始和一个终端的结点,并且所有结点都最多只有一个直接前趋和一个直接后继。例如:线性表、栈、队列、串

非线性结构:一个结点可能有多个直接前趋和直接后继。例如:树、图。

划分方式二—四类基本逻辑结构

  1. 集合结构:结构中的元素之间除了同属于一个集合的关系外,无任何其他关系。
  2. 线性关系:结构中的元素之间存在一对一的线性关系。
  3. 树形结构:结构中的数据元素之间存在着一对多的层次关系。
  4. 图状结构或者网状结构:结构中的元素之间存在着多对多的任意关系。

七、存储结构的种类

  1. 顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。C语言中用数组来实现顺序结构。
  2. 2.链式存储结构

用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。C语言中用指针来实现链式存储结构。

2345_image_file_copy_52.jpg

2345_image_file_copy_53.jpg

2345_image_file_copy_54.jpg

3.索引存储结构

在存储节点信息的同时,还建立附加的索引表

2345_image_file_copy_55.jpg

4.散列存储结构

根据节点的关键字直接计算出该节点的存储地址

2345_image_file_copy_56.jpg

第二章:数据类型和抽象数据类型

2345_image_file_copy_57.jpg

数据类型:数据类型是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称。

2345_image_file_copy_58.jpg

抽象数据类型:是指一个数据模型以及定义在此数据模型上的一组操作。

抽象数据类型的形式定义:抽象数据类型可用(D,S,P)三元组表示

其中:

  • D是数据对象
  • S是D上的关系集
  • P是对D的基本操作集

2345_image_file_copy_59.jpg

一个抽象数据类型的定义格式如下:

2345_image_file_copy_60.jpg

数据对象,数据关系的定义用伪代码描述

基本操作的定义格式为:

2345_image_file_copy_61.jpg

2345_image_file_copy_62.jpg

2345_image_file_copy_63.jpg

2345_image_file_copy_64.jpg

第三节:抽象数据类型的表现与实现

2345_image_file_copy_65.jpg

第四节:算法与算法分析

2345_image_file_copy_66.jpg

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

2345_image_file_copy_67.jpg

算法的描述

2345_image_file_copy_68.jpg

算法的特性:一个算法必须具备以下五个重要的特性:

  • 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷内完成。
  • 确定性:算法中的每一条指令必须有确切的含义,没有二义性,在任何条件下,只有唯一的一条执行路径,即对于相同的输入只能得到相同的输出。
  • 可行性:算法是可执行的,算法描述的操作可以通过已经实现的基本操作执行有限次来实现。
  • 输入:一个算法有零个或多个输入
  • 输出:一个算法有一个或多个输出

算法设计的要求

2345_image_file_copy_69.jpg

2345_image_file_copy_70.jpg

2345_image_file_copy_72.jpg

2345_image_file_copy_73.jpg

一个好的算法首先要具备正确性,然后是健壮性,可读性、在几个方面都满足的情况下,主要考虑算法的效率

通过算法的效率来评判不同算法的优劣程度。

算法效率通过以下两个方面来考虑:

时间效率:是指算法所耗费的时间。

空间效率:指的是算法执行过程中所耗费的存储空间。

时间效率和空间效率有时候是矛盾的。

算法时间效率的度量

算法时间效率可以依据该算法编制的程序在计算机上执行所消耗的时间来度量。

两种度量方法

事后统计:将算法实现,测算其时间和空间开销

缺点:编写程序实现算法将花费较多的时间和精力,所得实验结果依赖于计算机的软硬件等环境因素,掩盖算法本身的优劣。

事前分析:对算法所消耗资源的一种估算方法(一般采用事前分析)

2345_image_file_copy_74.jpg

2345_image_file_copy_75.jpg

每条语句执行一次所需的时间,一般是随机器而异的,取决于机器的指令性能,速度,以及编译的代码质量,是由机器本身软硬件环境决定的,他与算法无关。

所以,我们可以假设执行每条语句所需要的时间均为单位时间,此时对算法的运行时间的讨论就可以转化为该算法中所有语句的执行次数,即频度之和。

 
         

2345_image_file_copy_77.jpg

2345_image_file_copy_78.jpg

为了便于比较不同算法的时间效率,我们仅比较他们的数量级

2345_image_file_copy_79.jpg

数量级越大的越不好

2345_image_file_copy_80.jpg

分析算法时间复杂度的基本方法

2345_image_file_copy_81.jpg

分析算法时间复杂度的基本方法

  • 找出语句频度最大的那条语句作为基本语句
  • 计算基本语句的频度得到问题规模n的某个函数f(n)
  • 取其数量级用符号"O"表示

2345_image_file_copy_82.jpg

2345_image_file_copy_83.jpg

算法的时间复杂度:

  • 最坏时间复杂度:指在最坏的情况下,算法的时间复杂度
  • 平均复杂度:指在所有可能输入实例在等概率出现的情况下,算法的期望运行时间。
  • 最好时间复杂度:指在最好情况下,算法的时间复杂度
  • 一般总是考虑在最坏情况下的时间复杂度,以保证算法的运行时间不会比它更长。

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

2345_image_file_copy_84.jpg

渐进空间复杂度

渐进空间复杂度:算法所需存储空间的度量

记作:S(n)=O(f(n));其中n为问题的规模(或大小)

2345_image_file_copy_85.jpg


相关文章
|
6月前
|
机器学习/深度学习 边缘计算 算法
NOMA和OFDMA优化算法分析
NOMA和OFDMA优化算法分析
366 127
|
8月前
|
数据采集 机器学习/深度学习 算法
别急着上算法,咱先把数据整明白:大数据分析的5个基本步骤,你都搞对了吗?
别急着上算法,咱先把数据整明白:大数据分析的5个基本步骤,你都搞对了吗?
566 4
|
3月前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
268 3
|
3月前
|
存储 边缘计算 算法
【太阳能学报EI复现】基于粒子群优化算法的风-水电联合优化运行分析(Matlab代码实现)
【太阳能学报EI复现】基于粒子群优化算法的风-水电联合优化运行分析(Matlab代码实现)
|
4月前
|
机器学习/深度学习 算法 5G
【MUSIC、最大似然与克拉美-罗下界】MUSIC与ESPRIT 算法来估计到达角(AoA),并尝试推导克拉美-罗下界(CRLB)以分析其性能研究(Matlab代码实现)
【MUSIC、最大似然与克拉美-罗下界】MUSIC与ESPRIT 算法来估计到达角(AoA),并尝试推导克拉美-罗下界(CRLB)以分析其性能研究(Matlab代码实现)
207 0
|
5月前
|
编解码 算法 5G
MIMO雷达空间谱估计中Capon算法与MUSIC算法的对比分析及实现
MIMO雷达空间谱估计中Capon算法与MUSIC算法的对比分析及实现
441 2
|
5月前
|
存储 监控 安全
企业上网监控系统中红黑树数据结构的 Python 算法实现与应用研究
企业上网监控系统需高效处理海量数据,传统数据结构存在性能瓶颈。红黑树通过自平衡机制,确保查找、插入、删除操作的时间复杂度稳定在 O(log n),适用于网络记录存储、设备信息维护及安全事件排序等场景。本文分析红黑树的理论基础、应用场景及 Python 实现,并探讨其在企业监控系统中的实践价值,提升系统性能与稳定性。
178 1
|
5月前
|
人工智能 自然语言处理 算法
2025 年 7 月境内深度合成服务算法备案情况分析报告
2025年7月,中央网信办发布第十二批深度合成算法备案信息,全国389款产品通过备案,服务提供者占比超七成。截至7月14日,全国累计备案达3834款,覆盖文本、图像、音视频等多模态场景,广泛应用于生活服务、医疗、金融等领域。广东以135款居首,数字人、AI客服等C端应用主导,民营企业成主力,国企聚焦公共服务。随着AI政策推动,备案已成为AI产品合规上线关键环节。
|
5月前
|
存储 监控 算法
基于跳表数据结构的企业局域网监控异常连接实时检测 C++ 算法研究
跳表(Skip List)是一种基于概率的数据结构,适用于企业局域网监控中海量连接记录的高效处理。其通过多层索引机制实现快速查找、插入和删除操作,时间复杂度为 $O(\log n)$,优于链表和平衡树。跳表在异常连接识别、黑名单管理和历史记录溯源等场景中表现出色,具备实现简单、支持范围查询等优势,是企业网络监控中动态数据管理的理想选择。
177 0
|
8月前
|
存储 监控 算法
员工行为监控软件中的 Go 语言哈希表算法:理论、实现与分析
当代企业管理体系中,员工行为监控软件已逐步成为维护企业信息安全、提升工作效能的关键工具。这类软件能够实时记录员工操作行为,为企业管理者提供数据驱动的决策依据。其核心支撑技术在于数据结构与算法的精妙运用。本文聚焦于 Go 语言中的哈希表算法,深入探究其在员工行为监控软件中的应用逻辑与实现机制。
219 14

热门文章

最新文章