当前位置: 首页 > article >正文

【数据结构】数据结构,算法 概念

0.本篇问题: 

  1. 数据、数据元素、数据对象、数据项之间的基本关系?
  2. ADT是什么?
  3. 数据结构的三要素?
  4. 数据的逻辑结构有哪些?
  5. 数据的存储结构有哪些?
  6. 算法的五个特征?
  7. O(1)  O(logn)  O(n^n)  O(n)  O(n^2)    O(n^3)  O(2^n)  O(n!)  O(nlogn) 大小关系?

★ 错题&典型题

1. 可以用( )定义一个完整的数据结构

A.数据元素        B.数据对象        C.数据关系        D.抽象数据类型

2.以下属于逻辑结构的是( )

A.顺序表        B.哈希表        C.有序表        D.单链表

3.以下关于数据结构的说法中,正确的是( )

A.数据结构的逻辑结构独立于其存储结构

B.数据结构的存储结构独立于其逻辑结构

C.数据的逻辑结构唯一决定其存储结构

D.数据结构仅由其逻辑结构和存储结构决定

4.一个算法应该是( )

A.程序        B.问题求解步骤的描述        C.要满足五个基本特性        D. A和C

5.某算法的时间复杂度为O(n^2),则表示该算法的( )

A.问题规模是n^2                   B.执行时间等于n^2        

C.执行时间与n^2成正比        D.问题规模与n^2成正比

6.【2017】 求下面程序时间复杂度

int func(int n) {int i = 0, sum = 0;while (sum < n)	sum += ++i;return i;
}

7.【2019】求下面程序时间复杂度 

x = 0;
while (n >= (x + 1) * (x + 1))x = x + 1;

8.【2022】求下面程序时间复杂度

int sum = 0;
for (int i = 1; i < n; i *= 2)for (int j = 0; j < i; j++)sum++;

一、数据、数据元素、数据对象、数据项、数据结构、数据类型

1.1 概念(P1)

  • 数据结构是相互之间存在一种或多种特定关系的数据元素的集合;它包括三方面的内容:逻辑结构,存储结构,数据的运算。
  • 数据对象是具有相同性质的数据元素的集合,是数据的一个子集;
  • 数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合;
  • 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理;
  • 一个数据元素有若干数据项组成,数据项是构成数据元素的不可分割的最小单位。
  • 数据类型:原子类型、结构类型、抽象数据类型(ADT):描述了数据的逻辑结构和抽象运算,通常用(数据对象,数据关系,基本操作)这样的三元组来表示,eg.栈、队列,树...(ADT和数据密切相关,但不完全相同)

1.2  我的理解

  1. 数据项是最小的,数据是最大的;
  2. 数据项构成数据元素;
  3. 数据元素构成数据对象;
  4. 所有数据对象的总和是数据。

  5. 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。(数据元素+关系)
  6. 数据对象是具有相同性质的数据元素的集合,是数据的一个子集。(数据元素)
  • 世界上所有的信息、符号的总和是数据。
  • 这些数据有所有大学学生数据(数据对象),所有餐厅顾客数据(数据对象),XX大学学生数据(数据对象),所有动物的XX数据(数据对象)...
  • XX大学同学ABCD...数据(数据元素),...
  • 班级学生有自己的学号(数据项),姓名(数据项),年龄(数据项)...
  • 数据结构是带存储关系的同学ABCD...的数据(通过它你不仅知道这些数据,还知道它们之间的关系是怎样的,如何存储的)
  • 数据对象,数据元素,数据项根据研究内容的不同都是相对的,这项研究中的数据元素可能是下一项研究中的数据对象。

二、数据结构的三要素

2.1 数据结构三要素

逻辑结构,存储结构,运算        知存储就知逻辑,知逻辑不一定知存储!

        2.2.1 逻辑结构

                四类基本结构:线性结构、集合(同属一个集合无其他关系)、树形、图状结构(网状结构)。

        2.2.2 存储结构

                ①顺序存储

                ②链式存储

                ③索引存储(索引表中每项是索引项(关键字,地址)) 优点:检索快,缺点:索引表额外占据存储空间;增删要修改索引表,时间花费多。

                ④散列存储(哈希存储)

        2.2.3 运算

                施加在数据上的运算,包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。

三、算法 

3.1 算法的概念和特征

        算法是对特定问题求解步骤的一种描述,他是指令的有限数列,其中的每条指令表示一个或多个操作。

        特征:①有穷性 ②确定性 ③可行性 ④输入>=0 ⑤输出>=1

3.2 时间复杂度&空间复杂度 

        是问题规模n的函数。

Q:算法问题规模永远是A:不是。在算法中,问题规模不一定是n。

n通常用来表示输入规模,比如在一个排序算法中,n可能代表要排序的元素个数。但问题规模也可以用其他方式来衡量。 
例如,在图算法中,除了用顶点数量n来表示问题规模,还可能会涉及边的数量m。对于一些复杂的算法,如计算两个图的同构问题,问题规模可能是由多个因素共同决定的,包括顶点数、边数、顶点和边的属性等复杂因素。
在矩阵运算相关的算法中,矩阵的行数和列数都可能影响问题规模,而不是简单地用一个n来表示。

        常见的渐进时间复杂度比较:

        O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

答案:1.D        2.C        3.A        4.B        5.C        6.O(n^(1/2))        7.O(n^(1/2))        8.O(n)

-THE END-

相关文章:

【数据结构】数据结构,算法 概念

0.本篇问题&#xff1a; 数据、数据元素、数据对象、数据项之间的基本关系&#xff1f;ADT是什么&#xff1f;数据结构的三要素&#xff1f;数据的逻辑结构有哪些&#xff1f;数据的存储结构有哪些&#xff1f;算法的五个特征&#xff1f;O(1) O(logn) O(n^n) O(n) O(n^2…...

pytest 框架学习总结

视频&#xff1a;pytest01-快速上手_哔哩哔哩_bilibili 资料&#xff1a;pytest 框架 - 白月黑羽 基于 Python 语言的自动化测试框架 最知名的 有如下 3 款unittest、pytest、robotframework 前两款框架主要&#xff08;或者说很大程度上&#xff09;是 聚焦 在 白盒单元测试…...

总结 HTTP 协议的基本格式, 相关知识以及抓包工具fiddler的使用

目录 1 HTTP是什么 2 HTTP协议格式 3 HTTP请求(Request) 3.1 认识URL 3.2 方法 3.3 认识请求"报头"(header) 4 HTTP响应详解 4.1 认识"状态码"(statuscode) 4.2 认识响应"报头"(header) 4.3 认识响应"正⽂"(body) 5 通过f…...

python中的max(),需要注意的点

words ["apple", "banana", "grape", "cherry"] 对每个单词&#xff0c;keylambda x: len(x) 会计算它的长度&#xff1a; "apple" 长度是 5"banana" 长度是 6"grape" 长度是 5"cherry" 长度…...

DeepSeek-R1大模型微调技术深度解析:架构、方法与应用全解析

1. DeepSeek-R1大模型架构设计与技术特性 1.1 架构设计 DeepSeek-R1作为超大规模语言模型,其核心架构设计包含以下创新: 专家混合架构(MoE) 采用6710亿参数的混合专家架构(MoE),每个推理过程仅激活370亿参数,实现计算效率与资源利用率的突破性提升。 Transformer框架…...

探索Maas平台与阿里 QWQ 技术:AI调参的魔法世界

摘要&#xff1a;本文介绍了蓝耘 Maas 平台在人工智能领域的表现及其核心优势&#xff0c;包括强大的模型支持、高效的资源调度和友好的操作界面。文章还探讨了蓝耘 Maas 平台与阿里 QWQ 技术的融合亮点及应用拓展实例&#xff0c;并提供了调参实战指南&#xff0c;最后对蓝耘 …...

Linux第三次练习

1、创建根目录结构中的所有的普通文件 首先在根目录下面新创建一个test目录&#xff0c;然后将查找到的普通文件新建到test目录下 2、列出所有账号的账号名 3、将/etc/passwd中内容按照冒号隔开的第三个字符从大到小排序后输出所有内容 4、列出/etc/passwd中的第20行-25行内容…...

软件测试知识总结

1、黑盒测试、白盒测试、灰盒测试 1.1 黑盒测试 黑盒测试又叫功能测试、数据驱动测试 或 基于需求规格说明书的功能测试。该类测试注重于测试软件的功能性需求。 采用这种测试方法&#xff0c;测试工程师把测试对象看作一个黑盒子&#xff0c;完全不考虑程序内部的逻辑结构和…...

JConsole 监控线程池状态

JConsole 可以用来监控 Java 线程池&#xff08;ThreadPoolExecutor&#xff09;的状态&#xff0c;包括线程数量、任务执行情况、CPU 及内存使用情况等。下面是具体的操作步骤&#xff1a; 一、启动 JConsole 1. 启动 JConsole Windows&#xff1a;在 JDK bin 目录下找到 j…...

【HTML】三、表单与布局标签

文章目录 1、input1.1 input的占位文案1.2 单选框1.3 上传文件1.4 多选框 2、 下拉菜单3、文本域&#xff1a;多行输入4、label标签&#xff1a;说明与增大点击范围5、按钮与form表单6、无语义布局标签7、有语义的布局标签8、字符实体9、练习&#xff1a;注册页面 1、input in…...

OpenBMC:BmcWeb添加路由1 getParameterTag

BmcWeb对于路由的设计其实是参考了Crow BMCWEB_ROUTE(app, "/upload/image/<str>").privileges({{"ConfigureComponents", "ConfigureManager"}}).methods(boost::beast::http::verb::post, boost::beast::http::verb::put)([](const cro…...

【结构设计】3D打印创想三维Ender 3 v2

【结构设计】3D打印创想三维Ender 3 v2 文章目录 前言一、Creality Slicer1.2.3打印参数设置二、配件更换1.捆扎绑扎线2.气动接头3D打印机配件插头3.3D打印机配件Ender3pro/V2喷头套件4.读卡器 TF卡5.micro sd卡 三、调平四、参考文章总结 前言 使用工具&#xff1a; 1.创想三…...

嵌入式web服务器实现上传下载储存研究

标题:嵌入式web服务器实现上传下载储存研究 内容:1.摘要 随着互联网与嵌入式系统的不断融合&#xff0c;嵌入式设备对数据上传、下载及储存功能的需求日益增长。本文旨在研究嵌入式web服务器实现上传、下载和储存功能的有效方法。通过分析常见的嵌入式web服务器架构&#xff0…...

UE小:UE5.5 PixelStreamingInfrastructure 使用时注意事项

1、鼠标默认显示 player.ts中的Config中添加HoveringMouse:true 然后运行typescript\package.json中的"build":npx webpack --config webpack.prod.js...

Anaconda 入门指南

Anaconda 入门指南 一、下载安装 Anaconda 1、下载地址&#xff1a;Anaconda 推荐下载 python3 版本, 毕竟未来 python2 是要停止维护的。 2、安装 Anaconda 按照安装程序提示一步步安装就好了, 安装完成之后会多几个应用&#xff1a; Anaconda Navigtor &#xff1a;用于管…...

web组态可视化编辑器

Web组态可视化编辑器是一种用于创建和配置工业自动化、物联网&#xff08;IoT&#xff09;和智能建筑等领域的图形化用户界面&#xff08;GUI&#xff09;的工具。它允许用户通过拖放组件、配置参数和连接数据源来设计和部署实时监控和控制界面。以下是一些常见的Web组态可视化…...

CTA重建:脑血管重建,CT三维重建,三维建模 技术,实现

CTA&#xff08;CT血管造影&#xff09;是一种基于CT扫描的医学成像技术&#xff0c;主要用于血管系统的三维重建和可视化。脑血管重建是CTA的重要应用之一&#xff0c;能够帮助医生诊断脑血管疾病&#xff08;如动脉瘤、狭窄、畸形等&#xff09;。以下是实现CTA脑血管重建、C…...

Ollama+OpenWebUI本地部署大模型

OllamaOpenWebUI本地部署大模型 前言Ollama使用Ollama安装Ollama修改配置Ollama 拉取远程大模型Ollama 构建本地大模型Ollama 运行本地模型&#xff1a;命令行交互Api调用Web 端调用 总结 前言 Ollama是一个开源项目&#xff0c;用于在本地计算机上运行大型语言模型&#xff0…...

如何打包数据库mysql数据,并上传到虚拟机上进行部署?

1.连接数据库&#xff0c;使得我们能看到数据库信息&#xff0c;才能进行打包上传 2. 3. 导出结果如下&#xff0c;是xml文件 4.可以查询每个xml文件的属性&#xff0c;确保有大小&#xff0c;这样才是真实导出 5跟着黑马&#xff0c;新建文件夹&#xff0c;并且把对应的东西放…...

Vue 自定义指令深度解析与应用实践

文章目录 1. 自定义指令概述1.1 核心概念1.2 指令生命周期 2. 自定义指令基础2.1 指令注册2.2 指令使用 3. 指令钩子函数详解3.1 钩子函数参数3.2 钩子函数示例 4. 自定义指令应用场景4.1 表单自动聚焦4.2 权限控制4.3 图片懒加载 5. 高级应用技巧5.1 动态指令参数5.2 指令修饰…...

Vue中有什么组件可以实现轮播效果,每次出现四个元素?

在 Vue 中实现「每次显示四个元素」的轮播效果&#xff0c;可以通过以下组件实现&#xff08;推荐按优先级排序&#xff09;&#xff1a; 1. Swiper Vue-Awesome-Swiper&#xff08;推荐&#xff09; 特点&#xff1a; 最成熟的轮播库&#xff0c;支持复杂交互&#xff08;触…...

Doris表的分区数量保持在多少范围内性能是最好的

在 Apache Doris 中&#xff0c;分区数量的最佳范围需结合数据规模、查询模式及集群资源动态调整&#xff0c;以下是根据最新版本&#xff08;2025年&#xff09;的实践总结和官方建议&#xff1a; 1. 分区数量与数据量的平衡原则 • 单分区数据量建议&#xff1a;每个分区的数…...

Android 手机启动过程

梳理 为了梳理思路&#xff0c;笔者画了一幅关于 Android 手机启动的过程图片内容纯属个人见解&#xff0c;如有错误&#xff0c;欢迎各位指正...

Unity 开发资源汇总 | 插件 | 模型 | 源码(不断更新中,建议收藏)

&#x1f493; 欢迎访问 Unity 打怪升级大本营 Unity是一个强大的游戏开发平台&#xff0c;它提供了丰富的工具和资源&#xff0c;让开发者能够创造出令人惊叹的游戏和交互式体验。无论你是初学者还是经验丰富的开发者&#xff0c;Unity的生态系统中总有一些资源可以帮助你提升…...

JVM崩溃时产生的文件 hs_err.pid.log

hs_err.pid.log hs_err.pid.log&#xff1a;当jvm崩溃时&#xff0c;会生成一个hs_err_pid.log文件&#xff0c;并且把它存放到程序目录下&#xff0c;可以通过该文件来定位导致jvm崩溃的原因。 jvm崩溃&#xff0c;是由jvm自身的bug或者本地方法执行错误引起的&#xff0c;本…...

聊聊 Redis 的一些有趣的特性(上)

聊聊 Redis 的一些有趣的特性&#xff08;上&#xff09; 一、持久化 Redis 是内存数据库&#xff0c;数据全部保存在内存中。如果服务器发生宕机&#xff0c;内存中的数据将会全部丢失。为防止系统崩溃后数据丢失&#xff0c;Redis 提供了持久化功能&#xff0c;可将内存中的…...

使用OpenCV和MediaPipe库——抽烟检测(姿态监控)

目录 抽烟检测的运用 1. 安全监控 (1) 公共场所禁烟监管 (2) 工业安全 2. 智能城市与执法 (1) 城市违章吸烟检测 (2) 无人值守管理 3. 健康管理与医疗 (1) 吸烟习惯分析 (2) 远程监护 4. AI 监控与商业分析 (1) 保险行业 (2) 商场营销 5. 技术实现 (1) 计算机视…...

怎么有效降低知网AIGC率

在学术创作日益规范且数字化检测技术不断发展的当下&#xff0c;知网 AIGC 检测成为了众多创作者关注的焦点。许多人苦恼于如何有效降低知网 AIGC 率&#xff0c;让自己的作品在通过检测的同时&#xff0c;彰显出真实的创作水平与独特性。接下来&#xff0c;我们就深入探讨降低…...

C语言每日一练——day_8

引言 针对初学者&#xff0c;每日练习几个题&#xff0c;快速上手C语言。第八天。&#xff08;连续更新中&#xff09; 采用在线OJ的形式 什么是在线OJ&#xff1f; 在线判题系统&#xff08;英语&#xff1a;Online Judge&#xff0c;缩写OJ&#xff09;是一种在编程竞赛中用…...

Mac中nvm切换node版本失败,关闭终端再次打开还是之前的node

Mac中使用 nvm 管理 node 版本&#xff0c;在使用指令&#xff1a;nvm use XXX 切换版本之后。 关闭终端&#xff0c;再次打开&#xff0c;输入 node -v 还是得到之前的 node 版本。 原因&#xff1a; 在这里这个 default 中有个 node 的版本号&#xff0c;使用 nvm use 时&a…...