嵌入式开发学习---(部分)数据结构(无代码)

数据结构

为什么学习数据结构?
1)c语言告诉如何写程序,数据结构是如何简洁高效的写程序
2)遇到一个实际问题,需要写程序去实现相应功能,需要解决那两个方面的问题?
如何表达数据之间的逻辑规律以及如何将数据存放到计算机中
数据结构:数据的逻辑结构存储结构及操作(数据的运算)
数据:不只是一个单纯的数值,而是类似于一个集合的概念
结构:数据之间的关系
采用什么方法解决问题
算法
数据结构加算法就是程序

数据结构是什么
数据的逻辑结构存储结构及操作(数据的运算)

数据

数据:不只是一个单纯的数值,而是类似于一个集合的概念
数据元素:是数据的基本单位,由若干个基本项组成
数据项:是数据的最小单位,描述数据元素的信息
节点:数据元素

逻辑结构

数据之间的逻辑规律和数据之间的关系
图片来源于网络,侵权立删
数据之间的关系
1)线性关系 ----->线性结构 ------->一对一------->线性表
2)层次关系------>树形结构--------->一对多--------->树
3)网状关系------->图状结构-------->多对多---------->图

存储结构

数据的逻辑结构在计算机中的具体实现

1)顺序存储结构
数组:在内存当中一段连续的内存空间中保存数据(如c语言中的一维数组)
2)链式存储结构
图片来源于网络,侵权立删
特点:数据在内存中是不连续的,通过指针进行连接
链表:

struct    node_t
{int  date;//数据域struct   node_t  * next;//指针域,指向自身结构体类型
}

3)索引存储结构
提高查找速度
索引表 + 数据文件
图片来源于网络,侵权立删

4)散列存储结构

数据在存储的时候与关键码之间存在某种对应关系
存的时候按照对应关系存
取的时候按照对应关系取

操作(运算)

增删改查

算法

解决问题的思想方法

程序

用计算机语言对算法的具体实现

算法与数据结构

  • 算法 + 数据结构 = 程序
    算法的设计:取决于选定的逻辑结构
    算法的实现:依赖于采用的存储结构(顺序、链式)

算法的特性

1)有穷性:算法的执行步骤是有限的
2)确定性:算法的每一步都是有明确含义的
3)可行性:算法能够在有限的时间内完成
4)输入
5)输出

如何评价一个算法的好坏?

正确性:保证算法可以正确完成功能
易读性:容易被解读
健壮性:容错处理
高效性:执行效率,算法执行快慢容易受到计算机性能的影响,不可以作为评判算法高效性的标准,这通过可执行语句重复执行次数来衡量算法是否高效 。(时间复杂度)
低存储性:占用空间小(空间复杂度)

时间复杂度

算法的可执行语句重复执行的次数
通常时间复杂度用一个问题规模函数来表达	
T(n) = O(f(n))
T(n)	//问题规模的时间函数
n		问题规模   
O		//时间数量级
f(n)	//算法的可执行语句重复执行的次数  用问题规模n的某个函数f(n)来表达

计算大O的方法

1)根据问题规模n写出表达式f(n)
2)只保留最高项,其他项舍去
3)如果最高想系数不为1,除以最高项系数
4)如果有常数项,将其置为1  // f(n)=8; O(1)

空间复杂度

算法占用的空间大小。一般将算法的辅助空间作为衡量空间复杂度的标准。
算法占用的存储空间包括:

1)输入输出数据所占空间
2)算法本身所占空间
3)额外需要的辅助空间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

背包问题---

一、背包模型 有一个体积为V的背包,商店有n个物品,每个物品有一个价值v和体积w,每个物品只能被拿一次,问能够装下物品的最大价值。 这里每一种物品只有两种状态即"拿"或"不拿". 设状态dp[i][j]表示到第i个物品为止,拿的物品总体积为j的情况下的最大价…

一、持续集成介绍

持续集成介绍 一、什么是持续集成二、持续集成的流程三、持续集成的组成要素四、持续集成的好处 一、什么是持续集成 持续集成(CI)指的是,频繁地(一天多次)将代码集成到主干。持续集成的目的,就是让产品可…

LeetCode:1483. 树节点的第 K 个祖先(倍增 Java)

目录 1483. 树节点的第 K 个祖先 题目描述: 实现代码与解析: 倍增 原理思路: 1483. 树节点的第 K 个祖先 题目描述: 给你一棵树,树上有 n 个节点,按从 0 到 n-1 编号。树以父节点数组的形式给出&#…

软件测试——黑盒测试

黑盒测试也就是针对功能进行测试,白盒测试就是后端根据自己的代码逻辑进行一下自测,灰盒测试就是黑盒和白盒的混合测试。 1.黑盒测试主要发现以下类型的错误 对比需求规格说明书功能遗漏或者不一致。 接口错误 数据库连接访问错误 效率不高&#xff…

【好书推荐-第十四期】《 互联网大厂晋升指南:从P5到P9的升级攻略》

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公众号:洲与AI。 🎈 本文专栏:本文收录…

第八讲 Sort Aggregate 算法

我们现在将讨论如何使用迄今为止讨论过的 DBMS 组件来执行查询。 1 查询计划【Query Plan】 我们首先来看当一个查询【Query】被解析【Parsed】后会发生什么? 当 SQL 查询被提供给数据库执行引擎,它将通过语法解析器进行检查,然后它会被转换…

机器人力觉控制(力源)原理及力矩传感器性能分析

机器人力控原理及其性能分析 在机器人的操作任务中,处理机器人和环境之间的物理接触是非常重要的。由于机器人系统的复杂性和不确定性,纯运动控制往往是不够的,因为即使是最精确的模型也无法完全准确地预测所有可能的情况。 当机器人在与环境…

arm开发板移植工具mkfs.ext4

文章目录 一、前言二、手动安装e2fsprogs1、下载源码包2、解压源码3、配置4、编译5、安装 三、移植四、验证五、总结 一、前言 在buildroot菜单中,可以通过勾选e2fsprogs工具来安装mkfs.ext4工具: Target packages -> Filesystem and flash utilit…

vue3中mars3d通过滑动条去改变地图图层的透明度

效果图 加滑动条 因为我这个存在单选框,在点击滑动条的时候 会出现将单选框选中的问题,所以用了一个div把滑动条包裹起来并加了冒泡 changeLiveSituationBg方法 // 改变底图显示颜色 val是我点击这个单选框对应值 const changeLiveSituationBg va…

5G智慧地铁数字孪生可视化平台,推进铁路行业数字化转型

随着科技的快速发展,5G智慧地铁数字孪生可视化平台正逐渐成为铁路行业数字化转型的重要推动力。巨蟹数科数字孪生平台集成了5G通信技术、大数据分析、云计算和人工智能等先进技术,通过构建数字孪生模型,实现对地铁运营全过程的实时监控、预测…

互联网大厂都在用的DevOps工具,看看你会几样?

关注公众号:“DevOps实战派”,获取更多DevOps和运维的精彩内容。 DevOps 是一种强调开发与 IT 运营之间合作的软件开发范式,主要依靠自动化来优化流程、提高生产力并确保及时、可靠的软件交付。 下面,我将介绍目前在互联网大厂中…

【7】双向循环链表

【7】双向循环链表 1、双向循环链表2、添加3、删除 1、双向循环链表 🖊 头节点的 prev 指向尾节点 🖊 尾节点的 next 指向头节点 2、添加 /*** 往索引位置添加元素*/Overridepublic void add(int index, E element) {checkIndex4Add(index);if (index s…

《QT实用小工具·十三》FlatUI辅助类之各种炫酷的控件集合

1、概述 源码放在文章末尾 FlatUI辅助类之各种炫酷的控件集合 按钮样式设置。文本框样式设置。进度条样式。滑块条样式。单选框样式。滚动条样式。可自由设置对象的高度宽度大小等。自带默认参数值。 下面是demo演示: 项目部分代码如下所示: #ifnd…

“人性化设计”技术概要

本文是由《埃森哲技术愿景 2024:“人性化设计”技术将通过提高生产力和创造力来重塑行业并重新定义领导者》这个文章来翻译解读的。原文地址如下,大家可以自行下载: 下载地址 其实看到这篇文章的时候,联想到这些年机器人的市场发展…

一站式指南:Flutter应用如何顺利登陆苹果App Store

引言 🚀 Flutter作为一种跨平台的移动应用程序开发框架,为开发者提供了便利,使他们能够通过单一的代码库构建出高性能、高保真度的应用程序,同时支持Android和iOS两个平台。然而,完成Flutter应用程序的开发只是第一步…

Spark-Scala语言实战(10)

在之前的文章中,我们学习了如何在spark中使用RDD的filter,distinct,intersection三种方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-…

ThingsBoard通过MQTT发送遥测数据

MQTT基础 客户端 MQTT连接 遥测上传API 案例 MQTT基础 MQTT是一种轻量级的发布-订阅消息传递协议,它可能最适合各种物联网设备。 你可以在此处找到有关MQTT的更多信息,ThingsBoard服务器支持QoS级别0(最多一次)和QoS级别1&…

我的C++奇迹之旅:内联函数和auto关键推导和指针空值

文章目录 📝内联函数🌠 查看内联函数inline方式🌉内联函数特性🌉面试题 🌠auto关键字(C11)🌠 auto的使用细则🌉auto不能推导的场景 🌠基于范围的for循环(C11)🌠范围for的…

C语言----找出10个整数中的最大值

今天让我们来看看如何找出10个数的最大值吧。 题目描述 今天杰克在做数学题目的时候产生了思考,我应该怎么才能找出10个数的最大值呢,给大家一道题目,帮帮杰克吧,现有数组int arr[] { 1,2,15,4,8,6,23,8,9,10 };,使用…

【Consul】基于Golang实现Consul服务的注册、注销、修改、监控注册的服务变化、实时同步服务信息机制

【Consul】基于Go实现Consul服务的注册、注销、修改、监控注册的服务变化、实时同步服务信息机制 大家好 我是寸铁👊 总结了一篇【Consul】基于Go实现Consul服务的注册、注销、修改、监控注册的服务变化、实时同步服务信息机制✨ 这应该是目前全网最全的使用golang手…