嵌入式学习——数据结构

news2024/10/16 16:31:00

数据结构

  • 数据结构的定义

    • 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
    • 例如,学生信息管理系统中每个学生的信息(姓名、年龄、学号等)构成一个数据元素,所有学生信息组成的数据结构可用于管理和操作这些数据。
  • 逻辑结构

    • 集合:所有数据平等地处于同一集合中,没有明显的相互关系。例如,在一个学校中,所有学生组成的集合,不考虑学生之间的其他关联时,就是集合结构。
    • 线性:数据之间是一对一的关系。如数组,int arr[5] = {1, 2, 3, 4, 5};,每个元素与其相邻元素存在一对一的顺序关系。
    • :呈现一对多的关系。例如,公司的组织结构图,一个领导对应多个下属。
    • :多对多的关系。像城市之间的交通网络,一个城市可以与多个城市有道路连接,同时也被多个城市连接。
  • 物理结构

    • 顺序存储:数据存放在连续的存储单元中,逻辑关系和物理关系一致。比如数组,在内存中是连续存放的。int arr[10];arr[0]arr[1]等元素在内存中是依次相邻的。
    • 链式:数据存放的存储单元可以是随机或任意的,可以连续也可以不连续。例如链表,每个节点包含数据和指向下一个节点的指针,节点在内存中的位置可以不连续。
  • 数据元素、数据对象和数据类型

    	struct Per 数据元素
    	{
    		char name;//数据项
    		int age;
    		char phone;
    	}	
    			
    	struct Per list[100]; //数据对象
    • 数据元素:例如struct Per结构体定义了一个人的信息作为数据元素,其中包含char nameint agechar phone等数据项。
    • 数据对象struct Per list[100];是一个数据对象,它是具有相同数据结构的元素的集合。
    • 数据类型
      • 原子类型:像intcharfloat等基本数据类型,int num = 5;num只能存储整数。
      • 结构类型:如structunionstruct可以组合多个不同类型的数据项,union可以使多个成员共享同一段内存。
      • 抽象数据类型   ADT(abstract data type:是数学模型和操作的结合。例如栈,它的数学模型是后进先出(LIFO),操作包括入栈、出栈等。

算法

  • 算法的定义

    • 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,每条指令表示一个或多个操作。比如计算一个数组中所有元素的和,从第一个元素开始依次相加直到最后一个元素的过程就是一个算法。
  • 算法的特征

    • 输入、输出特性:输入是可选的,例如计算1+2+3不需要额外输入,但有些算法需要输入数据。输出是必须的,算法执行完要有结果输出,如排序算法输出排序后的数组。
    • 有穷性:执行的步骤会自动结束,不能是死循环,并且每一步是在可以接受的时间内完成。例如求两个数的最大公约数的欧几里得算法,经过有限步计算就会得到结果,而不是无限循环下去。
    • 确定性:对于给定的输入,算法的输出是唯一确定的。比如对一个有序数组进行二分查找,相同的查找值每次执行算法都会得到相同的结果。
    • 可行性:每一个步骤都是可以实现的。
  • 算法的设计要求

    • 正确性
      • 语法正确:算法在编程实现时要符合编程语言的语法规则。
      • 合法输入能得到合理结果:如编写一个除法算法,当除数不为 0 时应能正确计算商。
      • 对非法输入给出满足要求的规格说明:对于除法算法,当除数为 0 时,应给出明确的错误提示或者按照特定的规则处理。
      • 对精心选择、甚至刁难的测试都能正常运行且结果正确:例如对排序算法,要考虑各种不同的输入数据情况,包括有序、无序、部分有序等,算法都应能正确排序。
    • 可读性:代码结构清晰、有良好的注释,便于其他人理解。例如在复杂的递归算法中添加详细的注释解释递归的逻辑。
    • 健壮性:当输入非法数据时,能进行相应的处理而不是产生异常。比如在接收用户输入的年龄时,如果用户输入了字符,程序应提示用户重新输入而不是崩溃。
    • 高效(存储低、效率高):在设计算法时,要考虑时间和空间复杂度。
  • 算法时间复杂度

    • 是对执行算法所花时间的度量。例如,在一个简单的循环中遍历一个长度为n的数组,时间复杂度为O(n);而直接访问数组中的一个元素,不随数组大小变化而改变操作次数,时间复杂度为O(1)
    • 推导时间复杂度的步骤:
      • 用常数 1 取代运行时间中的所有加法常数。
      • 在修改后的运行函数中,只保留最高阶项。
      • 如果最高阶存在且不是 1,则去除这个项相乘的常数。
    • 常见的时间复杂度顺序:O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)
    • 例如,在一个有序数组中进行二分查找,每次查找都将搜索范围缩小一半,时间复杂度为O(logn);而冒泡排序算法,需要比较和交换数组中几乎每一对元素,时间复杂度为O(n^2)

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

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

相关文章

大模型背后的秘密武器:向量数据库引领数据革命

在探讨为何向量数据库会成为大模型热潮中的基础设施之前,我们首先需要深入理解非结构化数据的本质、其迅猛增长的动因,以及这一趋势如何驱动了数据存储与检索技术的革新。随着人工智能(AI)技术的飞速发展,特别是在自然语言处理(NLP)、计算机视觉(CV)等领域的突破性进展…

.net 调用海康SDK实现NVR录像视频的下载

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,最近一直被测试拿捏,痛苦的挣扎中… 我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯…

简单计算机网络概念

1.浏览器过程 输入url&#xff0c;解析url 1.协议http、https的区别&#xff1b;HTTPS就是在HTTP与TCP之间增加了SSL/TSL安全传输层 2.格式&#xff1a;协议//主机:端口/路径&#xff1b; 3.HTTP版本&#xff1a;1.0和1.1 4.HTTP/1.1&#xff1a;1. 持久连接&#xff1a;为了…

Windows子系统Ubuntu安装MySQL及windows的navicate连接

Windows子系统Ubuntu安装MySQL及局域网连接 MySQL8.0之前 mysql8.0版本

证件照背景替换软件有哪些?证照之星怎么换背景色

在照相馆拍的证件照不满意&#xff0c;自行在家拍摄了证件照&#xff0c;却不会处理复杂的照片背景怎么办呢&#xff1f;其实可以使用专业软件来替换证件照背景。这篇文章就告诉大家证件照背景替换软件有哪些&#xff0c;证件照背景替换怎么弄。 一、证件照背景替换软件有哪些…

4千6历年高考英语试题大全ACCESS\EXCEL数据库

《历年高#考英语试题大全ACCESS数据库》搜集了大量的全#国各#地高#考英语模拟试题&#xff0c;每道题目均有相应的答案和解析&#xff1b;这种数据虽然没有《一站到底》类的数据结构&#xff08;一个选项一个字段&#xff09;那么好&#xff0c;但是通过技术人员还是可以很简单…

基于SSM的图书馆管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的图书馆管理系统7拥有两种角色&#xff1a;管理员和用户 管理员&#xff1a;图书管理、类型管理、借阅管理、续借管理、归还管理、罚金管理、留言管理等 学生用户&#xff1a;借…

前端速通面经八股系列(八)—— React篇(上)

React目录 一、组件基础1. React 事件机制2. React的事件和普通的HTML事件有什么不同&#xff1f;3. React 组件中怎么做事件代理&#xff1f;它的原理是什么&#xff1f;4. React 高阶组件、Render props、hooks 有什么区别&#xff0c;为什么要不断迭代5. 对React-Fiber的理解…

眼科市场格局固化,排名靠后的光正眼科还能逆袭吗?

眼科是A股的热门领域&#xff0c;也是医疗的黄金赛道。或许也正因为如此&#xff0c;这条赛道已经习惯了通过并购&#xff0c;利用资本杠杆跑马圈地。以最大规模的龙头爱尔眼科为首&#xff0c;并购是眼科的常规操作。 然而&#xff0c;真正观察赛道腰部及以下的公司&#xff…

十八、计算机视觉-canny边缘检测

文章目录 前言一、canny检测的流程1.高斯滤波&#xff08;Gaussian Smoothing&#xff09;2.梯度计算&#xff08;Gradient Calculation&#xff09;3.非极大值抑制&#xff08;Non-maximum Suppression&#xff09;4.双阈值检测&#xff08;Double Thresholding&#xff09;5.…

6、Flume安装

按照采集通道规划&#xff0c;需在hadoop102&#xff0c;hadoop104两台节点分别部署一个Flume。可参照以下步骤先在hadoop102安装&#xff0c;然后再进行分发。 1. Flume安装部署 1.1 安装地址 &#xff08;1&#xff09; Flume官网地址&#xff1a;Welcome to Apache Flume…

COCI2016-2017#1 Kralj

目录 COCI2016-2017#1 Kralj题目描述背景输入输出数据范围 题解解法 打赏 COCI2016-2017#1 Kralj 题目描述 背景 精灵王将 n n n个精灵编号为 1 , ⋯ , n 1 , \cdots , n 1,⋯,n&#xff0c;矮人王将 n n n个矮人围成一个圆环&#xff0c;从某个矮人开始顺时针编号为 1 , ⋯…

Mysql高级篇(中)——SQL性能分析

Mysql高级篇&#xff08;中&#xff09;—— SQL性能分析 一、&#xff08;了解&#xff09;MySQL Query Optimizer 的主要功能和原理二、&#xff08;了解&#xff09;MySQL 常见瓶颈三、关键字 EXPLAIN1、是什么2、基本语法3、EXPLAIN 执行信息详解&#xff08;1&#xff09…

Windows--linux共享文件夹

1、如果共享文件夹设置在Windows上面 文件夹设置 个人家里电脑通常不设置用户名密码 linux端mount命令行 mount -t cifs -o usernamewade,vers3.0 //192.168.0.143/openvswitch-2.17.10 /root/windows

计算机专业选题推荐-基于python的岗位兼职招聘平台【python-爬虫-大数据定制】

&#x1f496;&#x1f525;作者主页&#xff1a;毕设木哥 精彩专栏推荐订阅&#xff1a;在 下方专栏&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; 实战项目 文章目录 实战项目 一、基于python的岗位兼职招聘平…

我的第3个AI项目-Advanced RAG with Gemma, Weaviate, and LlamaIndex

目录 一、项目简介概述时间kaggle地址&#xff08;代码和详细注解&#xff09;主要工作和收获技术栈数据集结果 二、bug修复在 Kaggle 使用模型时需要先同意该模型的使用条款使用 GPU 时显存不足把 Weaviate 从V3升级到V4改动一&#xff1a;创建client改动二&#xff1a;判断某…

网络编程day02(字节序、TCP编程)

目录 【1】字节序 1》大小端转换 2》端口转换 3》IP地址转换 主机字节序转换为网络字节序 &#xff08;小端序->大端序&#xff09; 网络字节序转换为主机字节序&#xff08;大端序->小端序&#xff09; 【2】TCP编程 1》流程 2》函数接口 1> socket 2> …

免费的 Mac 应用清理工具Pearcleaner v3.8.6

免费的 Mac 应用清理工具。这是一款免费开源的 Mac 应用清理工具&#xff0c;能够彻底卸载应用并清理残留文件。它采用 SwiftUI 开发&#xff0c;提供了简单易用的界面&#xff0c;支持右键卸载、迷你模式和 Homebrew 清理等功能。 下载链接&#xff1a;https://pan.quark.cn/s…

【Visual Studio 报错】vs 在使用二进制写入文件时弹窗报错:使用简体中文 gb2312 编码加载文件

如以下报错 解决办法 解决方法&#xff1a;文件->高级保存选项->将文件编码形式改为“UTF-8带签名” 若找不到高级保存选项&#xff0c;可以跟着下面路径把该选项调出来 &#xff1a;工具->自定义->命令->菜单栏中改成文件->预览右边点添加命令->类别中…

BRAM IP Native模式使用

简介 BRAM&#xff08;‌Block RAM&#xff09;是‌FPGA&#xff08;Field-Programmable Gate Array&#xff09;中的一种专用RAM资源&#xff0c;固定分布在FPGA内部的特定位置。该内容主要对BRAM&#xff08;Block RAM”的缩写&#xff09;Native模式下IP界面做详细描述和使用…