深入解析:嵌入式第二十三篇——数据结构基本概念

news/2026/1/21 20:18:02/文章来源:https://www.cnblogs.com/tlnshuju/p/19513953

深入解析:嵌入式第二十三篇——数据结构基本概念

2026-01-21 20:07  tlnshuju  阅读(0)  评论(0)    收藏  举报

一、数据结构的定义

数据结构是计算机中存储、组织数据的方式,旨在实现高效的数据访问和修改。它包含数据元素之间的逻辑关系、物理存储方式以及相关操作。

二、数据结构的基本知识

1、线性数据结构

(1)数组:连续内存存储相同类型元素,支持随机访问。

(2)链表:通过指针链接的节点组成,分为单向链表、双向链表和循环链表。

(3)栈:后进先出(LIFO)结构,支持压栈(push)和弹栈(pop)操作。

(4)队列:先进先出(FIFO)结构,包含普通队列、双端队列和优先队列。

2、非线性数据结构

(1)树:层次结构,常见类型包括二叉树、二叉搜索树、AVL树和堆。

(2)图:由顶点和边组成,分为有向图和无向图,常用邻接矩阵或邻接表存储。

3、基本操作

(1)插入:添加新数据元素。

(2)删除:移除指定数据元素。

(3)查找:检索特定元素的位置或值。

(4)遍历:按顺序访问所有元素。

(5)排序:按特定规则重新排列元素。

4、时间复杂度

(1)定义

时间复杂度用于描述算法运行时间随输入规模增长的变化趋势,通常用大O符号(O)表示。它关注的是最坏情况下或平均情况下操作次数的增长率,而非具体运行时间。

(2)常见时间复杂度类型

O(1) 常数时间
算法的执行时间不随输入规模变化。例如访问数组元素、哈希表查询。

O(log n) 对数时间
执行时间与输入规模的对数成正比。例如二分查找、平衡二叉树的搜索。

O(n) 线性时间
执行时间与输入规模成线性关系。例如遍历数组、链表。

O(n log n) 线性对数时间
常见于高效排序算法,如快速排序、归并排序。

O(n²) 平方时间
通常出现在嵌套循环中,如冒泡排序、选择排序。

O(2ⁿ) 指数时间
常见于穷举算法,如解决某些递归问题(斐波那契数列的朴素递归实现)。

(3)时间复杂度的计算方法

规则1:忽略低阶项
例如,T(n) = 3n² + 2n + 1 的时间复杂度为 O(n²),仅保留最高阶项。

规则2:忽略常数系数
例如,T(n) = 5n³ 的时间复杂度为 O(n³)。

规则3:循环嵌套的乘法原则
单层循环的时间复杂度通常为 O(n),嵌套循环则为各层循环复杂度的乘积。例如:

for i in range(n):       # O(n)for j in range(n):   # O(n)print(i, j)      # 总复杂度 O(n²)

(4)与其他复杂度概念的对比

空间复杂度
描述算法所需内存随输入规模的增长趋势,同样用大O表示法。例如,递归调用栈的空间复杂度可能为 O(n)。

平均情况与最坏情况
快速排序的平均时间复杂度为 O(n log n),但最坏情况下(如已排序数组)可能退化为 O(n²)。

常见的时间复杂度所耗时间的大小排序
O(1)

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

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

相关文章

内网服务器环境如何进行python依赖安装

使用命令查询本地包依赖&#xff1a;pipdeptree ├── requests [required: >2.31.0,<3.0.0, installed: 2.31.0] │ ├── certifi [required: >2017.4.17, installed: 2024.2.2] │ ├── charset-normalizer [required: >2,<4, installed: 3.3.2] │ …

【机器人路径规划】基于四种最新算法(小龙虾优化算法COA、螳螂搜索算法MSA、红尾鹰算法RTH、霸王龙优化算法TROA)求解机器人路径规划研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真…

2026成都最新房屋装修品牌top5评测!服务深度覆盖金牛区、新都区、青羊区、成华区等地优质装修公司权威榜单发布,品质赋能构筑理想家居生活.

随着人们对居住品质要求的不断提升,房屋装修市场呈现出多元化、个性化的发展趋势。本榜单基于环保标准、设计实力、施工工艺、服务覆盖、客户口碑五大维度(四川大晶装饰新增“晶钻体系”专项维度),结合行业协会数据…

提示工程架构师最新趋势:AI辅助的提示词自动化生成与准确性保障

提示工程架构师最新趋势:AI辅助的提示词自动化生成与准确性保障 一、引言 (Introduction) 钩子 (The Hook) 你是否曾在使用人工智能模型时,为了想出一个能得到理想输出的提示词而绞尽脑汁?比如,当你希望通过图像生成模型创作一幅独特的艺术作品,或者利用语言模型撰写一…

MongoDB 7.0 副本集高可用部署

适用场景:生产环境搭建高可用 MongoDB 副本集,确保数据冗余与自动故障转移 MongoDB 版本:7.0.28(社区版) 操作系统:CentOS 7 架构:1 主(Primary) + 2 从(Secondary),共 3 个数据承载节点(P-S-S) 存储引擎…

基于深度学习的密集人群行人检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)

摘要:本文介绍了一套基于YOLO系列算法的密集人群行人检测系统。系统支持图片、视频及实时摄像头检测,具备模型切换、置信度调节、数据统计与导出等功能。通过对比YOLOv5/v8/v11/v12模型性能,显示YOLO12n精度最高(mA…

0117模考

考时 开场1h纯在chatting with friends,1h后才开始写题。 开T1,这不是MST+倍增板子吗,直接写写写,调了几发,在10:40交了。 T2看了是个状压dp板子,感觉比较难写(之后发现代码只有1k),先看T3。 T3看了十分钟有了思…

ps命令

ps命令下面给你一组“更全、更强”的命令组合,用于 Kafka 进程性能分析。你可以把它们当作一套排查脚本:从线程、CPU、IO、网络、GC、JVM 堆、以及系统层面逐层分析。 我会按从轻量到重型排序,并且说明每条命令的用…

Docker 镜像启动失败时,如何用 --entrypoint 进入容器排障

# Docker 镜像启动即退出?使用 --entrypoint /bin/bash 进入容器排障 在日常使用 Docker 的过程中,经常会遇到这样一种情况: > 镜像可以正常 build > 但 `docker run` 一启动就退出 > 容器根本进不去,日…

打破屏幕的边界:实战 MCP 协议对接 Slack 与 Telegram,构建 7*24 小时随身待命的 AI 智能指挥中心

&#x1f680; 打破屏幕的边界&#xff1a;实战 MCP 协议对接 Slack 与 Telegram&#xff0c;构建 7*24 小时随身待命的 AI 智能指挥中心 &#x1f4a1; 内容摘要 (Abstract) 在移动办公与分布式协作成为主流的今天&#xff0c;交互的“即时性”与“无处不在”是提升生产力的…

使用natapp实现内网穿透

1、由于在开发的时候需要接微信支付、支付宝支付等其他接口的时候,需要线上回调,这在本地开发测试的比较麻烦,所以就使用natapp内网穿透工具实现远程接口可以直接回调到本地 2、安装:#由于我是使用的linux环境,所…

含贵金属六元合金详解:成分、应用及本地合规回收攻略

在贵金属合金领域,六元合金因兼具多种贵金属的优异性能,成为电子、化工、航空航天等高端行业的核心材料,同时也是工业废料中极具回收价值的“隐形宝库”。本文结合本地行业实操经验,全面拆解含贵金属六元合金的成分…

【C++】网络编程 - hjk

前言 围绕Socket 的基础概念、I/O 模型,逐步实现阻塞 I/O 客户端 - 服务器、多进程 / 多线程服务端处理,以及基于 select、poll、epoll 的 I/O 多路复用服务端,侧重与如何实现。 什么是socket 在C++中,Socket编程是…

京东e卡回收,秒变实用零钱

不少人手里都攒着闲置的京东e卡,想把它们换成能随手花的日常零钱。就说楼下的张阿姨吧,去年她收到两张面值五百的京东e卡,可她平时很少在京东购物,便琢磨着换成零钱给孙子买零食、给老伴买茶。她跑了两家线下礼品回…

Oracle 迁移至 KingbaseES 实战指南(最佳实践)

Oracle 迁移至 KingbaseES 实战指南&#xff08;最佳实践&#xff09; 随着国产数据库生态逐步成熟&#xff0c;越来越多企业开始将核心业务系统从 Oracle 等商业数据库迁移至国产数据库平台。其中&#xff0c;KingbaseES 作为国产关系型数据库中对 Oracle 兼容度较高的产品之…

day7 454.383.15.18

day7 454.383.15.18Leetcode 454 四数相加Ⅱ unordered_map使用的练习,一次通过,但是定义了两个unordered_map,并且需要经过两次遍历,空间和时间消耗都增加了 int fourSumCount(vector<int>& nums1, vec…

使用 Python 将 PowerPoint 转换为 Word 文档 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable or by

Android React Native 异常处理 异常信息 FAILURE: Build failed with an exception.* Where: Build file D:\Git\Tencent\odin-client\android\build.gradle line: 25* What went wrong: A problem occurred evaluating root project odin-client. > Failed to apply plu…

论文重复率突破30%?5个实用策略迅速达标

学术论文重复率超标是研究者常见的挑战&#xff0c;当查重结果显示超过30%时&#xff0c;建议采用以下5种核心策略进行优化处理&#xff1a;运用语义替换工具对原有表述进行创新性重构&#xff1b;对文章框架进行系统性调整以改变内容呈现顺序&#xff1b;将直接引文转换为释义…

智能降重新体验:8款AI论文查重工具实测对比

在学术写作过程中&#xff0c;查重率往往成为研究者必须面对的关键指标&#xff0c;既反映了学术规范性要求&#xff0c;又可能带来修改压力。为有效应对这一挑战&#xff0c;当前已有多种智能辅助工具可供选择&#xff0c;能够帮助用户在保持学术严谨性的前提下优化文本原创性…