数据结构C++版第一章绪论课后笔记

本文介绍了数据结构的基本概念,包括数据、数据元素、数据项、数据结构等,并详细阐述了逻辑结构与存储结构的区别。此外,还探讨了算法的概念、特性及评估方法。

数据结构C++版第一章课后笔记

一、数据结构问题起源于程序设计而程序设计的实质有两点

1数据表示:将数据存储在计算机中

2数据处理:处理数据,求解问题

二、基本概念

数据(Data:所有能输入到计算机中并能被计算机程序识别和处理的符号集合。

数值数据:整数、实数等

  非数值数据:图形、图象、声音、文字等

数据元素(Data Element:是数据的基本单位,一般由若干数据项(构成数据元素最小的、不可分割的单位)组成,也可以称为结点、顶点或记录,在计算机程序中通常作为一个整体进行考虑。

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

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

ü  包含关系:数据是由数据元素组成,数据元素是由数据项组成。

ü  数据元素是讨论数据结构时涉及的最小数据单位,其中的数据项一般不予考虑。

数据结构:相互之间存在一定关系的数据元素的集合。按照视点的不同,数据结构分为逻辑结构(即数据元素之间逻辑关系的整体)和存储结构(又称为物理结构,是数据及其逻辑结构在计算机中的表示)。

数据的逻辑结构是从具体问题抽象出来的数据模型

数据的存储结构除了存储数据元素之外,必须隐式或显式地存储数据元素之间的逻辑关系

⑴         集合:数据元素之间就是“属于同一个集合”

⑵         线性结构:数据元素之间存在着一对一的线性关系

数据结构 ⑶ 树结构:数据元素之间存在 着一对多的层次关系;每一个结点可以有多于一个的‘直接下级’,但是它只能有唯一的‘直接上级’。树型结构的最高层次的结点称为根(root)结点。只有它没有父结点

⑷图结构:数据元素之间存在着多对多的任意关系。

两种存储结构:

1. 顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来(隐式)表示。顺序存储结构称为紧凑存储结构,其紧凑性是指它的存储空间除了存储有用数据外,没有用于存储其他附加的信息

2. 链接存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示

数据字段

将数据结点分为两部分:

  指针字段

两个结点的逻辑后继关系可以用指针的指向来表达

数据类型(DataType):一组值的集合以及定义于这个值集上的一组操作的总称。数据类型规定了该类型数据的取值范围和对这些数据所能采取的操作。

基本数据类型

整数类型(integer)实数类型(real)布尔类型(boolean) 字符类型(char)指针类型(pointer)复合数据类型(结构体)

抽象(Abstract):抽出问题本质的特征而忽略非本质的细节,是对具体事物的一个概括。

   例如: 地图;中国人

抽象数据类型(Abstract Data Type,ADT):一个数据结构以及定义在该结构上的一组操作的总称。

ADT中仅定义基本操作

ADT 抽象数据类型名

Data

     数据元素之间逻辑关系的定义

Operation

     操作1

       前置条件:执行此操作前数据所必须的状态 

       输        入:执行此操作所需要的输入

       功        能:该操作将完成的功能

       输        出:执行该操作后产生的输出

       后置条件:执行该操作后数据的状态

    操作2

            ……

    ……

    操作n

           ……

endADT

数据类型和ADT的区别:

(1)数据类型=值的集合+一组操作的集合(不体现值间的关系)
 ADT=数据结构+一组基本操作

(2)数据类型指的是高级程序设计语言支持的基本数据类型,而ADT指的是自定义的数据类型

算法(Algorithm):是对特定问题求解步骤的一种描述,是指令的有限序列。

算法的5个重要特性

输入:一个算法有零个或多个输入。

输出:一个算法有一个或多个输出。

有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。

确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出。

可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。

算法=程序,算法与程序之间的关系:

(1)程序是使用某种程序设计语言对算法的具体实现,是对算法的精确描述,可在计算机上运行。

(2)程序可以是无穷的,而算法必须是有穷的。

(3)程序设计的核心是算法。

算法设计者在构思和设计了一个算法之后,必须清楚准确地将所设计的求解步骤记录下来,即描述算法。

   常用的描述算法的方法有

                   -自然语言

    -流程图

                   -程序设计语言

                     -伪代码等

算法设计的要求

•    正确性(Correctness):正确性分4个层次

•    可读性(Readability):算法应易于理解和交流。

•    健壮性(Robustness):算法应能对各种非法输入做出响应并给出相应提示或处理,不至产生错误输出或处于不确定状态。

•    效率与低存储量要求:效率指算法的执行时间,效率与低存储量和问题的规模(数据量)有关。

度量算法效率的方法:

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

缺点:
编写程序实现算法将花费较多的时间和精力;

所得实验结果依赖于计算机的软硬件等环境因素,有时容易掩盖算法本身的优劣。

 事前分析估算:对算法所消耗资源的一种估算方法

算法分析(Algorithm Analysis):对算法所需要的计算机资源——时间和空间进行估算。

1时间复杂度(Time Complexity)

2空间复杂度(Space Complexity)

算法的执行时间=每条语句执行时间之和

                                                                                                              单位时间

基本语句的执行次数

                                              执行次数×执行一次的时间

                                                                               

                                           指令系统、编译的代码质量

基本语句:执行次数与整个算法的执行次数成正比的语句。

问题规模:输入量的多少,一般可以从问题描述中得到。

算法的执行时间T是问题规模n的函数,记作T(n)

实际上,可以用算法中基本语句的执行次数的数量级来度量算法的运行时间,称作算法的渐进时间复杂度,简称时间复杂度,用大O记号表示。

若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≤c×f(n),则称T(n)=O(f(n))

定理:若A(n)=amnm+am-1nm-1+¼+a1n+a0是一个m次多项式,则A(n)=O(nm)。

计算时间复杂度时,一般只要分析清楚循环体内简单操作的执行次数即可。

总结估算算法时间复杂度的方法

(1)找出算法中执行次数最多的语句作为基本语句

(2)建立计算基本语句执行次数的求和表达式

(3)计算基本语句执行次数的数量级放入大O记号中

 

     

 

 

C语言-光伏MPPT算法:电导增量法扰动观察法+自动全局搜索Plecs最大功率跟踪算法仿真内容概要:本文档主要介绍了一种基于C语言实现的光伏最大功率点跟踪(MPPT)算法,结合电导增量法与扰动观察法,并引入自动全局搜索策略,利用Plecs仿真工具对算法进行建模与仿真验证。文档重点阐述了两种经典MPPT算法的原理、优缺点及其在不同光照温度条件下的动态响应特性,同时提出一种改进的复合控制策略以提升系统在复杂环境下的跟踪精度与稳定性。通过仿真结果对比分析,验证了所提方法在快速性准确性方面的优势,适用于光伏发电系统的高效能量转换控制。; 适合人群:具备一定C语言编程基础电力电子知识背景,从事光伏系统开发、嵌入式控制或新能源技术研发的工程师及高校研究人员;工作年限1-3年的初级至中级研发人员尤为适合。; 使用场景及目标:①掌握电导增量法与扰动观察法在实际光伏系统中的实现机制与切换逻辑;②学习如何在Plecs中搭建MPPT控制系统仿真模型;③实现自动全局搜索以避免传统算法陷入局部峰值问题,提升复杂工况下的最大功率追踪效率;④为光伏逆变器或太阳能充电控制器的算法开发提供技术参考与实现范例。; 阅读建议:建议读者结合文中提供的C语言算法逻辑与Plecs仿真模型同步学习,重点关注算法判断条件、步长调节策略及仿真参数设置。在理解基本原理的基础上,可通过修改光照强度、温度变化曲线等外部扰动因素,进一步测试算法鲁棒性,并尝试将其移植到实际嵌入式平台进行实验验证。
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)​ 内容概要:本文围绕动态环境下多无人机系统的协同路径规划与防撞问题展开研究,提出基于Matlab的仿真代码实现方案。研究重点在于在复杂、动态环境中实现多无人机之间的高效协同飞行与避障,涵盖路径规划算法设计与优化,确保无人机集群在执行任务过程中能够实时规避静态障碍物与动态冲突,保障飞行安全性与任务效率。文中结合智能优化算法,构建合理的成本目标函数(如路径长度、飞行高度、威胁规避、转弯角度等),并通过Matlab平台进行算法验证与仿真分析,展示多机协同的可行性与有效性。; 适合人群:具备一定Matlab编程基础,从事无人机控制、路径规划、智能优化算法研究的科研人员及研究生。; 使用场景及目标:①应用于灾害救援、军事侦察、区域巡检等多无人机协同任务场景;②目标是掌握多无人机系统在动态环境下的路径规划与防撞机制,提升协同作业能力与自主决策水平;③通过Matlab仿真深入理解协同算法的实现逻辑与参数调优方法。; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注目标函数设计、避障策略实现与多机协同逻辑,配合仿真结果分析算法性能,进一步可尝试引入新型智能算法进行优化改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值