数据结构:基本概念【详解】

【大话数据结构】——-数据结构 数据结构,顾名思义:就是计算机存储、组织数据的方式。 定义: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 使用数据结构的好处: 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。记为:Data_Structure=( 阅读详情
AI摘要

本文详细介绍了数据结构的基本概念,包括数据、数据元素、数据项、数据对象和数据结构,以及逻辑结构(集合、线性、树形、图形)和物理结构(顺序、链式)。同时阐述了算法的定义、特性、渐进增长分析以及时间复杂度和空间复杂度的概念。通过对数据结构和算法的理解,有助于提升程序设计能力。

友情链接:数据结构专栏

知识框架

在这里插入图片描述

数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系的操作等相关问题的学科

程序设计=数据结构+算法


No.1 什么是数据结构?

一、基本概念和术语

1.数据

数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。(数据不仅包含整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。)

2.数据元素

数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被成为记录。(比如:鸡鸭牛羊猪狗等动物就是禽类的数据元素)

3.数据项

数据项:一个数据元素可以由若干个数据项组成。(比如:人可以有眼耳口鼻这些数据项)。
数据项是数据不可分割的最小单位。

在这里插入图片描述

4.数据对象

数据对象:是性质相同的数据元素的集合,是数据的子集。(什么是性质相同呢,是指数据元素具有相同数量和类型的数据项,比如:人都有姓名、生日、性别等相同的数据项)
既然数据对象是数据的子集,在实际应用中,处理的数据元素通常具有相同性质,在不产生混淆的情况下,我们都将数据对象简称为数据。

5.数据结构

不同的数据元素之间不是独立的,而是存在特定的关系,我们将这些关系成为结构。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

二、逻辑结构和物理结构

1.逻辑结构

逻辑结构:是指数据对象中数据元素之间的相互关系。

集合结构
集合结构:集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系。
集合结构
线性结构
线性结构:线性结构中的数据元素之间是一对一的关系
线性结构
树形结构
树形结构:树形结构中的数据元素之间存在一种一对多的层次关系。
树形结构
图形结构
图形结构:图形结构的数据元素是多对多的关系
图形结构

2.物理结构(存储结构)

物理结构:是指数据的逻辑结构在计算机中的存储形式。
数据元素的存储结构形式有两种:顺序存储和链式存储。
顺序存储结构
顺序存储结构:是把数据存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
顺序存储结构
链式存储结构
链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。数据元素的存储关系并不能反映其逻辑关系,因此需要用一个指针存放数据元素的地址,这样通过地址就可以找到相关联数据元素的位置。
链式存储结构

三、抽象数据类型

1.数据类型

数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
不同的数据类型,开辟出的内存空间也不一样。
在C语言中,按照取值的不同,数据类型可以分为两类:

  • 原子类型:是不可再分解的基本类型,包括整型、实型、字符型。
  • 结构类型:由若干个类型组合而成,是可以再分解的。例如,整型数组是由若干个整型数据组成的。

比如,在C语言中变量生命int a,b,这就意味着,在给变量a和b赋值时不能超出int的取值范围,变量a和b之间的运算只能是int类型所允许的运算。

2.抽象数据类型

抽象是指抽取事物具有的普遍性的本质。
**抽象数据类型(Abstract Data Type, ADT):是指一个数学模型及定义在改模型上的一组操作。**抽象数据类型的定义仅取决于它的一组逻辑特性,而与其他计算机内部如何表示和实现无关。抽象数据类型体现了程序设计中的问题分解、抽象和信息隐藏的特性。

在这里插入图片描述


No.2 算法

一、算法定义

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

二、算法特性

算法具有五个基本特性:输入、输出、有穷性、确定性和可行性。
算法的设计要求:正确性、可读性、健壮性、高效率和低存储量需求。
算法的度量方法:事后统计方法(不科学、不准确)、事前分析估算方法。

三、函数的渐进增长

函数的渐进增长:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n > N,f(n)总是比g(n)大,那么,我们说f(n)的增长渐进快于g(n)。

判断一个算法效率时,函数中的常熟和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数。

判断一个算法好不好,我们只通过少量的数据是不能做出准确的判断的。如果我们可以对比某些算法的关键执行次数函数的渐进增长性,基本就可以分析出:某个算法,随着n的增大,它会越来越优于另一算法,或者越来越差于另一算法。

四、算法时间复杂度

1.算法时间复杂度定义

在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。
算法的时间复杂度,也就是算法的时间度量,记作: T ( n ) = O ( f ( n ) ) T(n) =O(f(n)) T(n)=O(f(n))。他表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。

这样用大写O()来体现算法时间复杂度的记法,我们称之为大O记法。
一般情况下,随着n的增大,T(n)增长最慢的算法为最优算法。

常见的时间复杂度

执行次数函数举例阶非正式术语
12O(1)常数阶
2n+3O(n)线性阶
3n2+2n+1O(n2)平方阶
5log2n+20O(logn)对数阶
2n+3nlog2n+19O(nlogn)nlogn阶
6n3+2n2+3n+4O(n3)立方阶
2nO(2n)指数阶

所消耗的时间从小到大的比较:

O ( 1 ) < O ( l o g n ) < O ( n ) < O ( n l o g n ) < O ( n 2 ) < O ( n 3 ) < O ( 2 n ) < O ( n ! ) < O ( n n ) O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n) O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

2.推导大O阶方法

推导大O阶

  1. 用常数1取代运行时间中的所有加法常数。
  2. 在修改后的运行次数函数中,只保留最高阶项。
  3. 如果最高阶项存在且不是1,则去除与这个项相乘的常数。
    得到的结果就是大O阶。

3.最坏情况和平均情况

我们查找一个有n个随机数字数组的某个数字,最好的情况是第一个数字就是,那么算法的时间复杂度为O(1),但也有可能这个数字就在最后一个位置上待着,那么算法的时间复杂度就是O(n),这就是最坏的一种情况了。
最坏情况运行时间是一种保证,那就是运行时间将不会再坏了。在应用中,这是一种最重要的需求,通常,除非特别指定,我们提到的运行时间都是最坏情况的运行时间。

4.算法空间复杂度

算法的空间复杂度通过计算算法所需的存储空间实现,算法空间复杂度的计算公式记作: S ( n ) = O ( f ( n ) ) S(n) = O(f(n)) S(n)=O(f(n))其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数。

附录

下文链接

数据结构:线性表

专栏

数据结构专栏

参考资料

1、严蔚敏、吴伟民:《数据结构(C语言版)》
2、程杰:《大话数据结构》
3、王道论坛:《数据结构考研复习指导》
4、托马斯·科尔曼等人:《算法导论》

数据结构与算法笔记 数据元素存储在彼此相互独立的内存中,每个独立的元素也叫做结点,每个结点中增加一项数据项用于存储其它相关结点的地址,以此表示结点之间的关系。缺点:添加、删除结点时,可能修改指向第一个结点的指针,参数需要使用二级指针,才能更改指针的指向,比较麻烦。第一个结点的数据域不存储有效元素,仅仅只是使用它的指针域永远指向链表的第一个数据有效的结点。创建、销毁、清空、插入、删除、访问、查询、修改、排序、遍历。数据元素:组成数据的有一定含义的基本单位,也叫做结点、节点、记录。数据项:有独立含义的数据的最小单位,也称为域。.. 阅读详情

相关推荐

数据结构与算法总论

说明:下面的文章小部分是参考了以前学校BBS上面的一篇文章,由于没有留下当时的出处,所以无法写下对这篇文章部分内容的原始作者,特此说明,并表示对他的感谢。 (一)何谓数据结构 数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成

MatrixCpp的专栏 3502

数据结构:八种数据结构大全

数据结构 1.1 数据结构概述 数据结构是计算机存储、组织数据的方式;通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构的优良将直接影响着我们程序的性能;常用的数据结构有:数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等; 1.2 数据结构的分类 1.2.1 排列方式 1)集合 集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系; 2)线性结构 线性

緑水長流*z 24万+

EB Tresos激活失败?3种实用解决方案帮你搞定(含离线激活步骤)

本文针对EB Tresos软件激活失败问题,提供了三种实用的解决方案。详细分析了激活失败的常见根源,并系统阐述了在线环境下的排查步骤、无网环境下的离线激活全流程,以及高级许可证环境修复方法,帮助汽车电子工程师快速恢复开发环境。

milk8的博客 609

数据结构(全)

线性结构, 树形结构, 图结构, 排序, 查找, 数据结构, 算法

s6664的博客 11万+

SAP 凭证分割功能 - 概述&系统配置 - Chapter01/02

为何要进行凭证拆分(分割)?在启用凭证分割之前, 在财务凭证在过账时会自动带出默认的利润中心,这利 润中心一般是从其他对象派生出来的(比如从成本中心、WBS 或资产负债表科 目定义默认的利润中心等),但是某些情况下的财务过账是不会派生出利润中 心的,比如说应收或者应付。如果一笔销售凭证上有两个行项目,10 行对应的成品物料 A 的利润中心为 TPCA-100;公司项目Dr/Cr科目金额利润中心10001Dr应收账款20002Cr库存商品A1500TPCA-1003Cr。

weixin_46525734的博客 3959

SAP采购信息记录批量维护实战:用BAPI ME_INFORECORD_MAINTAIN搞定价格等级和条件记录

本文深入解析SAP标准BAPI ME_INFORECORD_MAINTAIN在采购信息记录批量维护中的应用,特别聚焦价格等级和条件记录的技术难点。通过实战案例和代码示例,帮助用户高效处理供应商-物料价格数据,提升供应链管理效率。

weixin_42522320的博客 410

【数据结构】(一)数据结构入门

文章目录数据结构入门1 数据结构基础知识2 算法复杂度 数据结构入门 数据结构+算法=程序数据结构+算法=程序数据结构+算法=程序 1 数据结构基础知识 数据 指所有能输入到计算机中的描述客观事物的符号,包括文本、声音、图像、符号等。 数据元素 数据元素是数据的基本单位,也称节点或记录,如下图所示。 数据项 数据项表示有独立含义的数据最小单位,也称域。若干个数据项构成一个数据元素,数据项是不可分割的最小单位,如上图所示的“86”。 数据对象 数据对象是指相同特性的数据元素的集合,是数据的一个子集。 数据结

weixin_44378835的博客 1万+

如何通过常规测井曲线识别砂岩、泥岩、碳酸盐岩和煤层

常规测井曲线通过不同岩性的物理性质差异识别砂岩、泥岩、碳酸盐岩和煤层。砂岩表现为低自然伽马(GR)、中等密度(RHOB)和声波时差(DT);泥岩以高GR、高中子(NPHI)和高DT为特征;碳酸盐岩显示低GR、高RHOB和低DT;煤层则具有极低RHOB、极高NPHI和DT的独特组合。综合GR与三孔隙度曲线(RHOB、NPHI、DT)可有效区分岩性,其中密度测井对煤层识别最可靠。电阻率(RT)曲线辅助判断流体性质,但需结合其他参数综合分析。

love code, love life. 2591

数据结构详解:从基本概念到常见数据结构

本文系统介绍数据结构的基本概念、分类及典型应用。从逻辑结构与存储结构出发,阐述线性结构(如数组、链表、栈、队列)与非线性结构(如树、图、哈希表、堆)的特点与适用场景。结合代码示例分析其时间复杂度与实际性能,强调根据访问模式、数据规模和操作频率合理选择数据结构的重要性。最后指出数据结构在操作系统、数据库、网络等系统中的核心作用,是构建高效软件系统的基石。

一名热爱技术、专注实践的工程师,拥有一项实用新型专利及一项软件著作权。曾获国家级奖项7项、省级奖项30余项。专注网络技术与 AI Infra 领域,持续探索技术创新与工程实践,记录学习成长,分享技术经验,在探索中突破,在实践中精进。 834

【补充:脑电绘图教程 2】如何手动去除ICA伪迹分量

ICA可以将脑电信号分解为多个IC分量,由每个分量的平均功率地形图可以看出哪些分量属于伪迹,去除伪迹分量后,即可得到“干净”的脑电信号。本教程主要总结如何人工识别出ICA伪迹分量,不涉及ICA的原理讲解。本教程的主要知识来源是ICLabel官网ICLabel致力于自动识别IC分量属于哪种伪迹,并标记伪迹占比,可以在eeglabel中很方便地使用。ICLabel给出了几种常见伪迹的特点,本教程主要是根据ICLabel给出伪迹特点,对自己的数据集手动去除伪迹,以更深入了解自己数据集的质量和伪迹特点。

qq_40735196的博客 4231

如何在软件复位后保留指定RAM区域的数据

本文主要介绍S32K144的RAM retention功能

北极熊的脖子(16605192620@163.com) 1万+

数据结构基本概念与术语详解:逻辑结构、存储结构与ADT入门

数据结构是计算机存储、组织数据的方式,也是算法设计的基础。理解数据元素、数据项、数据对象等核心术语,是掌握数据结构课程的第一步。逻辑结构描述元素间的抽象关系,顺序存储与链式存储则决定其物理实现;抽象数据类型(ADT)通过封装数据与操作,为复杂系统提供清晰接口。在考研408及严蔚敏教材中,这些概念贯穿线性表、树、图等全部章节。无论是编写C语言课程设计,还是准备期末复习,厘清“逻辑结构”与“存储结构”的区别,掌握ADT定义方式,能有效避免概念混淆,提高代码实现的灵活性与可维护性。本文以通俗实例拆解基本术语,帮助

weixin_33552698的博客 296

地平线旭日X3 安装xfce桌面+VNC查看USB摄像头

VNC是Virtual Network Computing的缩写,它是一种使用RFB(Remote Frame Buffer)协议的用于控制远程电脑的图形桌面分享系统。xfce桌面相比于GNOME桌面更加轻量,占用的资源更少,在没有GPU的设备上也可以运行(旭日的Desktop版本从外观上好像就是xfce桌面,具体没有尝试)。可以使用专用的VNC客户端连接到开发板,例如vnc viewer。板子默认带有openssh-server,因此,WiFi热点连接成功后,就可以使用ssh登录开发板了。

bingdund的博客 509

数据结构概念与数组基础详解

而数据结构,就是制定一套规范,让数据有序存储、快速查找、高效修改、合理利用内存。而数组是最简单的线性结构,拥有查询快、增删慢、内存连续、下标访问的典型特征。掌握数组,是学习链表、栈、队列等复杂结构的第一步。因为内存连续、下标精准定位,数组查询数据速度极快,是所有数据结构中查询效率最高的。它也是算法的基础,算法负责处理数据,数据结构负责承载数据。1. 线性结构:数据一对一连续排列,如数组、链表、栈、队列。我们今天学习的数组,就是最基础、最常用的线性数据结构。简单来说,数据结构是计算机存储、组织数据的方式。

HuZhuoling的博客 221

Cadence OrCAD Capture 保持元器件编号情况复制元件,复制后元器件编号与复制前不同的问题解决

如下图所示复制时,已经勾选了“Preserve reference on copy”但是复制后的编号却与复制前不一样。本文简单介绍其原因及解决方法。

fydar的博客 3163

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

数据结构--基本概念和相关术语

数据结构基本概念及基本术语

Rcain_R的博客 228

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

数据结构———基本概念【详细解析】

本篇文章将带大家进入数据结构的学习,了解基本的概念,为之后的学习打下基础

yydsssy的博客 1476

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【数据结构与算法】数据结构与算法的基本概念

【数据结构与算法】数据结构与算法的基本概念一、数据结构的基本概念1. 数据结构的定义2. 数据结构的分类2.1 逻辑结构2.2 存储结构二、 算法的基本概念1. 算法是什么2. 算法的时间复杂度与空间复杂度2.1 时间复杂度2.2 空间复杂度

2302_80127404的博客 3024

【数据结构】数据结构与算法基本概念

学习内容:1、用程序代码把现实世界的问题信息化2、用计算机高效地处理这些信息从而创造价值。

m0_75045191的博客 1106

数据结构的基本概念

数据结构的基本概念

weixin_46933728的博客 838

数据结构:基本概念及术语

存储结构是逻辑结构在计算机的具体实现。现在我们来看一下逻辑结构,它是可以被细分的,一种是分为线性结构和非线性结构,另一种则是分为集合结构、线性结构、树状结构和图状结构。这是它们的一些含义:前一种:

2401_85816985的博客 1069

初学学习408之数据结构--数据结构基本概念

数据 : 是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。

Z1125994的博客 1170

数据结构基本概念

   数据结构基本概念          数据结构是指数据对象及其相互关系和构造方法,一个数据结构S可以用一个二元组表示为:S=(D,R).其中,D是数据结构中数据的非空有限集合,R是定义在D上的关系的非空有限集合。更详细一点也可以表示成ADT(Abstract data type,抽象数据类型)。ADT定义了数据对象,数据关系,以及数据操作。在数据结构中,结点及结点之间的关系成为数据的逻辑结构,数据在计算机中的存储形式成为数据的存储结构。     数据结构的分类      按逻辑结构划分:线性结构(表、栈

luckyxiaoxuan的专栏 5786
上一篇: Windows下解决端口号被占用
下一篇: windows上使用telnet测试端口号通不通
UniqueUnit
博客等级 码龄9年 4万+粉丝 15原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值