解码数据结构基础

news/2025/9/24 22:36:36/文章来源:https://www.cnblogs.com/YouEmbedded/p/19107350

数据结构基本概念

数据结构的核心是计算机存储和组织数据的方式,目的是提升后续数据访问效率,存储的通常是具有特定关系的数据集合。

核心术语定义

术语 定义 示例
数据(Data) 可输入计算机并被处理的符号总称 学生信息、数字、文本等
数据元素 数据的基本单位,计算机中作为整体处理 单个学生的完整信息
数据项 数据的最小单位,不可分割,组成数据元素 学生的学号、姓名、年龄
数据对象 多个相同类型数据元素的集合 一个班级所有学生的信息、世界上所有国家
数据结构 描述数据元素之间的逻辑结构(关系)和物理结构(存储方式) 数组(逻辑线性 + 物理顺序)、链表(逻辑线性 + 物理离散)

数据结构的两大构成

数据元素的逻辑关系物理关系无必然联系,可能同时存在、仅存一种或均不存在。

  • 逻辑结构:数据元素之间的逻辑关系,分 4 类:

    • 集合结构:元素间无任何关系(仅属于同一集合)
      集合

    • 线性结构:元素间为一对一关系(如排队队伍、学号序列)
      线性关系

    • 树状结构:元素间为一对多关系(如公司组织架构、家谱)
      树状结构

    • 图状结构:元素间为多对多关系(如社交网络、交通路线图)
      图状结构

  • 物理结构(存储结构):数据在计算机中的实际存储方式,分 2 类:

    • 顺序结构(连续存储):数据存于连续内存单元,可通过首地址计算任意元素地址(如数组)。
      顺序结构

    • 链式结构(离散存储):数据存于不连续内存单元,需通过指针 / 引用关联元素,无法直接计算后续元素地址(如链表)。
      链式结构

算法基础

算法是数据结构的 “操作逻辑”,二者结合构成程序(程序 = 数据结构 + 算法)。

算法定义

  • 广义:研究数据逻辑关系,选择存储方案并处理数据的过程。
  • 直白解释:解决问题的具体步骤(如排序算法 = 将无序数列变为有序的步骤)。

算法的 5 大特征

特征 要求
有穷性 程序需在有限次数内完成,且每步执行时间有限
确定性 每一条语句无歧义,相同输入必对应相同输出
可行性 复杂语句可分解为基本指令,且每条基本指令能在有限时间内完成
输入项 可包含 0 个或多个初始参数(0 个输入即无初始条件)
输出项 必须有 1 个或多个输出(无输出的算法无意义)

算法的衡量标准:复杂度

选择算法的核心是平衡时间复杂度空间复杂度(二者通常相互制约,“鱼和熊掌不可兼得”)。

时间复杂度

  • 定义:算法语句的执行次数(语句频度),而非实际运行时间(运行时间依赖 CPU 性能)。

  • 表示方法:用数学符号大 O () 表示,描述算法执行次数随数据规模(通常用n表示)增长的 “趋势”。

  • 计算技巧:

    • 只保留最高次项(最高次项对执行次数影响最大);
    • 舍弃最高次项的系数
    • 若结果为常数(与n无关),则时间复杂度为O(1)
  • 示例:

    // 示例1:n为数据规模
    for (int i=0; i < n; ++i) {  // 循环执行n次printf("hello\n");       // 核心语句执行n次
    }
    // 总执行次数:3n+2(多项式)→ 保留最高次项n,舍系数 → 时间复杂度O(n)`// 示例2:无数据规模n(固定次数)
    for (int i=0; i < 10; ++i) {  // 固定执行10次printf("hello\n");
    }
    // 总执行次数为常数 → 时间复杂度O(1)`
    

空间复杂度

  • 定义:算法运行期间所需的内存空间(包括存储数据、临时变量、指令等的空间)。
  • 原则:空间复杂度越小,算法对内存的占用越少,越优。

好算法的标准

  • 执行时间短(时间复杂度低)
  • 占用空间少(空间复杂度低)
  • 可读性好、易维护、可移植

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

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

相关文章

软件工程学习日志2025.9.24

📝 2025年9月24日 - Hadoop/HBase环境搭建与排错日记 🌟 今日工作概览 今天主要完成了Hadoop和HBase集群的环境搭建,解决了多个连接和配置问题,成功实现了从IDEA远程连接虚拟机HBase数据库。 🔧 技术操作记录H…

大厂代码编写习惯简谈

在当今软件开发行业,大厂的代码编写规范已经成为行业标杆。这些规范不仅仅是格式要求,更是一种工程思维的体现。简单探讨大厂代码规范的核心要点,帮助开发者提升代码质量与工程能力。 为什么需要严格的代码规范?当…

做网站什么用网页设计专业级

产业发展背景 早在2011年5月加拿大广播电视和电信委员会&#xff08;CRTC&#xff09;就发布了新的“国家宽带计划”&#xff0c;该计划显示&#xff0c;到2015年加拿大全体国民将享有5Mbps的宽带接入速度。CRTC表示&#xff1a;“来自市场的资金及有针对性的政府拨款将继续推动…

知识导航新体验:Perplexica+cpolar 24小时智能服务 - 教程

知识导航新体验:Perplexica+cpolar 24小时智能服务 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consol…

能不能写一个linux下类vim的编辑器 - 指南

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

串口助手开发经验 - Luis-123

串口助手开发经验Posted on 2025-09-24 22:28 Luis-123-long 阅读(0) 评论(0) 收藏 举报1.在开发log功能的时候,发现点击发送数据后,没有反应(初始化陷阱) 经检查(很漫长的检查)后发现在最后面加了上次遗留的初…

泊头网站建设公司做网站都需要自己的服务器吗

FL Studio 21是一款强大的数字音频工作站&#xff08;DAW&#xff09;软件&#xff0c;为您提供一个完整的软件音乐制作环境。它是制作高质量的音乐、乐器、录音等的完整解决方案。该程序配备了各种工具和插件&#xff0c;帮助你创建专业的虚拟乐器&#xff0c;如贝斯、吉他、钢…

电商设计网站如何制作网站视频教程

web渗透测试漏洞复现 1. ZooKeeper未授权漏洞复现1.1 ZooKeeper简介1.2 ZooKeeper漏洞复现1.3 ZooKeeper漏洞修复建议1. ZooKeeper未授权漏洞复现 1.1 ZooKeeper简介 ZooKeeper 是一个分布式的、开源的协调服务,最初由雅虎开发,现隶属于 Apache 软件基金会,是Google的Chub…

《计算机算法设计与分析》系列--算法实现题1.1-统计数字问题

引言: 这个题在原书的配套习题解答中,描述得比较简略,我不太看得懂,于是按自己的思路做了一遍。 问题描述: 一本书有n页,页码为1,2,.. N,(注意,页码的格式,0不会在最前面) 问在这所有的页码中,0-9这10个数…

银河麒麟系统root密码重置

银河麒麟系统root密码重置 一、系统环境Kylin-Server-V10-SP3-2403-Release-20240426-x86_64二、系统密码重置 1.重启系统重启操作系统,出现如下界面后按e键,进入grub模式。2.默认grub账户密码系统需要输入grub账户密…

银河麒麟系统磁盘管理

银河麒麟系统磁盘管理 一、系统环境Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso二、磁盘管理 1.添加物理磁盘系统识别磁盘,不重启系统重新扫描 SCSI 主机适配器识别到新连接的 SCSI 或 SATA 存储设备 ech…

浅谈傅里叶级数

我们可能都听说过傅里叶级数,但我们确切地知道它是什么吗?在这篇文章中,我将尝试逐一剖析这些概念。希望到最后,当你听到这些术语时,无论是在机器学习文献中还是与数学相关的内容中,你都能明白是怎么回事。 傅里…

js遍历对象

js遍历对象JavaScript 对象是由键值对组成的集合,遍历对象即逐个访问这些键值对。 常见的遍历方法包括 for...in 循环、Object.keys()、Object.values() 和 Object.entries()。 在jquery中还经常使用$.each(obj, func…

瑞丽网站建设域名注册局官网

目录 配置开始 Zabbix添加linux主机 4.为agent.zabbix.com添加模板 环境&#xff1a; &#xff08;隔天做的更换了IP&#xff0c;不影响实际操作&#xff09; IP 192.168.50.50 关闭防火墙规则 更改主机名 [rootlocalhost ~]# vim /etc/hostname agent.zabbix.com [rootloca…

day 10 (函数2 )

day 10 (函数2 &)课程:https://www.bilibili.com/video/BV1o4411M71o?spm_id_from=333.788.videopod.episodes&p=183 10.1 函数二学习目标简介------------------------------------------------ 执行后10…

入驻了爱发电

从2025/9/24起,我正式入驻了爱发电平台

奖励函数(双足)

1.通用奖励项:is_terminated,判断机器人是否终止 2.基座惩罚项 惩罚基座z方向的速度,鼓励机器人保持平衡 惩罚基座x,y方向上的角速度,鼓励机器人保持水平 3.关节惩罚项 惩罚关节加速度,鼓励平滑运动 关节位置限制…

离线部署镜像仓库搭建

离线部署镜像仓库搭建 一、系统准备一台可联网服务器:用于同步仓库(与目标系统同架构) 一台离线内网服务器:最终使用离线内网仓库的机器 存储空间:至少200GB 系统版本:CentOS Linux release 8.5.2111二、在可联网…

Temporal和Airflow有什么差别

Temporal和Airflow有什么差别 Temporal 和 Apache Airflow 是两种主流的工作流编排工具,但它们在设计理念、核心优势和适用场景上有着显著的不同。下面通过一个表格快速梳理它们的核心差异,然后我会进一步解释这些差…

厚街公司网站建设wordpress模板和下载不同

转载一篇问题解决博客&#xff1a;问题解决 一、烧录系统 使用SDK烧录 二、安装archiconda3 JETSON TX2 NX的架构是aarch64,与win10,linxu不同,所以不能安装Anaconda&#xff0c;这里安装对应的archiconda。 1. 安装 wget https://github.com/Archiconda/build-tools/rel…