数据结构1: 基础定义

数据结构与算法基础知识(1) 文章概述 数据结构的定义与分类 逻辑结构 物理结构 数据结构的定义 数据结构就是关系,是数据元素之间存在的一种或者多种特定关系的集合。 数据结构分为两类: a. 逻辑结构 b. 物理结构 逻辑结构: 数据对象中数据元素之间的相互关系。 物理结构: 数据的逻辑结构在计算机中的存储形式。 逻辑结构 逻辑结构分为以下四类: 1. 集合结构: 集合中的元素同属于一个集合外... 阅读详情

程序=数据结构+算法

数据结构:

基于C语言来说,C只给出了一些基本的数据类型,如int,char等, 但处理复杂问题时,只用这些基本的数据类型很难设计出高效的算法去解决问题,比如 设计一个学生信息管理系统,一个学生的信息包括 学号,姓名,性别,籍贯,专业,等等,学号是数字,其他的是字符,如果一个一个定义会十分麻烦,但他们都有抽象意义的联系,所以如果能够定义一个包含这些所有信息的数据,那么就会十分方便,所以我们可以用结构体来构造这样一个包含学生所有个人信息的数据。

综上,通俗来说:数据结构就是利用结构体将几个数据联系组合在一起形成的一个整体。

数据结构又分两个方面:

1.逻辑结构 2.存储结构

任何数据本身都没有含义,比如 2000,2000本身只是一个数,但2000年是年份,2000元,是钱,数据所表达的含义是我们从逻辑上赋予的。

逻辑结构:就是从抽象的逻辑关系上描述数据,比如, 在教室里,A和B是一个小组的,他们是一个小组的,这个关系,就是逻辑结构, 但是 他们俩在教室的位置离的很远,他们的位置就属于存储结构,也可以说是物理结构。

逻辑结构分 线性和非线性的,数据之间,逻辑关系是一对一的都是线性结构,一对多的都是非线性结构。

存储结构分 顺序存储结构和链式存储结构 顺序存储结构就是把所有元素依次存放在一片连续的存储空间中,链式存储结构是借助于指针将存储元素的空间串联起来。

算法:

算法的定义是:算法是为了解决某类问题而规定的一个有限长的操作序列。算法需要满足五个特性:有穷性,确定性,可行性,输入,输出。

评价算法优劣的标准: 正确性,可读性,健壮性,高效性。

通俗来说,算法就是解决问题的一种方法。

算法有两个复杂度

时间复杂度:

可以直接理解为,此算法处理问题的快慢,或者处理数据的多少。

假设计算机处理数据的基本操作所用时间都是1,如果对于一个算法来说:输入1000个数据得到正确答案所用时间为1000,即此算法处理了1000个数据或1000次数据,输入n个,则处理n个/次,耗时n,如果另一种算法求解相同的问题,输入1000个数据却只用处理500个数据就能得到正确答案,则第二种算法的效率更高。

如果用符号来表示  则: 如果对于一个算法,输入n个数据,此算法中运算次数最多的语句运算了m次,则时间复杂度为O(m)如果m为常数则规定为O(1).

如:

for(i=0;i<n;i++){x++;s=0;}   循环体内两条语句执行的次数相同都为n,所以时间复杂度为 O(n)

空间复杂度:

简单理解为求解问题所需存储数据的多少。

S(n)=O( f (n) )

一般来说,如果算法执行操作时所需要的存储空间对于输入数据量来说是常数,则该称该算法原地工作,空间复杂度为O(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

数据结构的定义和简介 1. 概述 数据结构定义: 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(如元素的CURD、排序等)而执行的相应操作,这个相应的操作也叫算法。 数据结构 = 元素 + 元素的关系 算法 = 对数据结构的操作 算法: 算法就是:解决问题的方法和步骤 衡量算法有如下标准: 时间复杂度 程序要执行的次数,并非执行... 阅读详情

相关推荐

数据结构1 c基础

1-1分数 1作者 何振峰单位 福州大学使用提取符(

ohuojiuwo的博客 2004

数据结构基础知识(一)

线性表是由n个相同类型的数据元素组成的有限序列,它是最基本最常用的一种线性结构。顾名思义,线性表就像是一条线,不会分叉。线性表有 唯一的开始和结束,除了第一个元素外,每个元素都有唯一的直接前驱:除了最后一个元素外,每个元素都有唯一的直接后继。顺序表的两种存储结构为顺序表和链表线性表是具有n个数据元素的优先序列。栈的类型定义这种后进先出(LastFirstOut,LIFO)的线性序列,称为“栈”。栈也是一种线性表,只不过它是操作受限的线性表,只能在一端进出操作。

农夫果园好好喝的博客 1983

Python数据结构——基础数据结构

以上是Python中的五种基础数据结构的简要介绍,它们在编程中非常有用。增加元素:可以使用 append() 方法向列表末尾添加新元素。修改元素:列表是可变的,可以通过索引来修改元素的值。索引和切片:可以使用索引和切片来访问字符串中的字符。获取元素:使用索引(从0开始)来访问列表中的元素。获取元素:使用索引来访问元组中的元素,与列表相似。添加键值对:可以通过赋值来添加新的键值对。不可变性:元组的元素不可被修改。获取值:通过键来访问字典中的值。去重:集合自动去除重复的元素。

Echo_Wish 2735

数据结构之数的定义、表示和术语

数定义性质术语结点的度数的度叶结点父节点子节点兄弟结点祖先结点结点的层次数的深度和数的高度分支路径和路径长度 定义 官方说法数是n(n>=0)个结点构成的有限集合。当n=0时成为空树。 其实数就是类似与树枝的一种数据结构组织类型。 性质 1.数中有一个称为“树根”(Boot)的特殊结点,用r表示,这就类似于每个数只有一个树根。 2.其余结点可以划分为m个不相交的子集T1,T2,···,Tn。...

qq_44256227的博客 1295

深入掌握数据结构基础:完成LE1与LE2练习

本文还有配套的精品资源,点击获取 简介:本话题针对数据结构课程中的两个基础练习,LE1与LE2进行详解,重点在于使用C语言实现常见数据结构及其算法。练习内容覆盖了数组、链表、栈、队列、树等基本数据结构,以及排序、搜索算法、内存管理和指针等重要概念。通过这些练习,学生能够加深对数据结构的理解,并掌握如何在C语言环境下高效编程,为学习更高级的编程技能打下坚实基础。 1...

weixin_29940495的博客 1437

BSW:MemMap模块配置及使用

(内存映射(MemMap)模块用于通过内存映射文件将代码和数据映射到特定的内存部分。MemMap生成特定的头文件,其中包含为MemorySection元素和编译器特定指令定义的内存映射预处理器。上面是比较官方的回答,说人话就是把数据和代码放在ECU内指定的地址。初级应用:软件中的bss,data,rodata,code,text,段需要在memory layout中划分具体的物理地址,对于多核系统,要将执行的数据和代码放在目标核的RAM和ROM。

Forever_Oct的博客 3676

7.1 函数式数据结构

7.1 函数式数据结构   用函数编程,程序处理的数据总是保存在数据结构中。数据结构和对象之间的区别在于,数据结构公开了表示数据(从名字就可以知道) 的结构;知道了数据的结构便于写处理的代码,但要到第九章才讨论,F# 还提供了一种封装结构的方法,如同面向对象编程,当我们想从库中导出 F# 数据结构,或者用于 C#。正如我们在第二章讨论函数概念时所说的,这些数据结构是不可变的。 在这一章,我们

心想事成 1484

Calibre电子书阅读器个性化样式定制指南

本文详细介绍了如何通过Calibre电子书阅读器的用户样式表功能进行深度个性化样式定制。从修改全局字体、行距、背景配色(包括深色/浅色模式)到美化代码块、引用等特殊元素,本指南提供了完整的CSS代码示例与实战技巧,帮助用户打造专属的舒适阅读环境,显著提升电子书阅读体验。

vv45678的博客 920

1.数据结构的定义

数据结构是指相互之间存在

谢语天 1274

Ubuntu离线情况下安装gcc编译器

Ubuntu离线情况下安装gcc编译器1.系统版本2.安装说明3.异常处理 1.系统版本 (1)Ubuntu系统版本:20.04.1LTS; (2)gcc编译器版本:gcc-9.3.0(下载链接为https://download.youkuaiyun.com/download/qq_18350351/13762214); 当前可找到的gcc最新版本为gcc-10,但是笔者在安装gcc-10版本时发现一些依赖项无法安装,因此选取了gcc-9版本。如果是在联网情况下安装,直接使用apt相关的安装指令即可。 2.安装说明 安

GreenHand的博客 3932

图形引擎实战:镭射效果制作分享

该方案的优势1.遵循物理的2.可以使用少量的参数去调控镭射的效果。计算相对简单,缺点仍是颜色不能够自定义,还有一种常见的方案是采样一张镭射贴图来模拟,好处是颜色可以自定义同时性能上还很高效没有复杂的公式计算。我查阅了网上普遍的方案,常见的做法是制作一个Ramp图生成工具,然后将生成好的ramp图赋给材质。这两个方案的好处是美术同学可以手动的去控制镭射的颜色。最后就是Shader中对Ramp图的采样的部分,Ramp图的UV坐标是使用fresnel作为Ramp的U轴坐标,0.5作为V轴坐标。

qq_41166022的博客 1353

数据结构(c语言版)(一)简单的概念了解

(1)数据结构是一门研究非数值计算的程序设计问题中计算机的_处理对象__ 及它们之间的 ___操作_____和运算等的学科。 (2)数据结构包括数据的_逻辑__结构和 __存储__结构。 (3)数据结构从逻辑上划分为三种基本类型_线性__,图形_,树形。 (4)数据的物理结构被分为顺序、链式、索引和___散列__四种。 (5)一种抽象数据类型包括_数据结构_ 和 定义在其上的一组操作 两部分。...

cornerlin的博客 679

自考计算机系统原理(第六章计算机系统概论)-13015

名词解释 I/O 硬件 I/O软件 用户空间I/O软件 内核空间I/O 软件 系统调用处理程序 系统调用服务例程 设备驱动程序 中断服务程序 系统级1/O函数 虚拟文件系统 文件描述符 文件元数据 流缓冲区 索引节点 目录文件 目录项 系统打开文件表 磁盘高速缓存 高速缓存 RAM I / O 控制方式 程序直接控制I/O 就绪状态 中断控制I/O 中断屏蔽字 多重中断 中断嵌套 DMA 方式 DMA 控制器 设备控制器 I/O端口 控制端口 数据端口 状态端口 I/O 地址空间 独立编址方式 统一编址方

qq_23872947的博客 1150

数据结构与算法——数组(基础篇)

博主也是第一次当博主,想要做一名名副其实的程序员,当然本质可能还是个商科生,看到博客的朋友可以一起交流经验,wechat:LYI_1998 数组的定义: 数组(Array):是一种线性表结构。它用一组连续的内存空间来存储一组具有相同类型的数据,同时它也是最基础的数据结构。 !此处应有线性表概念:数据排成一条线,每个线性表上的数据最多只有前后两个方向。常见的线性表数据结构有:数组、链表、队列...

NobodyH的博客 660

【深度学习|多实例学习】多实例学习(Multiple Instance Learning, MIL)的起源、发展和应用,附代码(一)

【深度学习|多实例学习】多实例学习(Multiple Instance Learning, MIL)的起源、发展和应用,附代码(一)

2401_89898861的博客 1921

2026年寒武纪数字IC笔试试卷带答案

本文摘要: 该数字IC设计测试卷包含单选题(30分)、波形分析题(15分)、多选题(30分)三类客观题,覆盖时序约束、半导体工艺、状态机、数制转换、同步复位等核心知识点。重点考察:1)跨时钟域处理(如异步FIFO、格雷码应用);2)时序分析(建立/保持时间、时钟约束指令);3)低功耗设计技术(时钟门控、DVFS);4)寒武纪MLU架构特性(张量核、混合精度计算)。解析强调工程实践要点,如异步复位需同步释放、建立时间违例与频率的关联性等。试题难度梯度明显,既包含基础概念辨析(如Moore/Mealy状态机),

Open 223

26.8.1数据结构

每个结点最多有两个子结点。

Far_MC666的博客 313

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[408] [数据结构] 栈-代码基础

栈:先进先出,后近后出。

xing___lan的博客 319

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数据结构与算法

同样的一组业务数据,选用不同的数据结构,程序的时间复杂度、空间复杂度会产生巨大差距。我们日常开发中会接触数字、字符串、对象等各式各样的数据,仅仅把数据存进内存远远不够,如何组织、存放这些数据,会直接影响整个程序的运行表现,这就是数据结构所要研究的内容。绝大多数编程语言当中,数组下标从0开始计数,数组第一个元素对应下标0,第二个元素下标为1,以此向后递推。而Python的列表list属于动态数组,底层会预先分配多余空间,当元素占满空间时自动扩容,对使用者屏蔽底层内存细节,使用更加便捷。

Fove_的博客 150

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数据结构学习Day1.2:算法及算法分析,算法描述

在数据结构与程序设计领域,算法是连接数据存储与实际应用的桥梁。算法的设计合理性、执行效率,直接决定了程序的性能上限,而算法分析则是判断算法优劣、优化算法性能的关键手段

2402_87579841的博客 523

【数据结构】树的定义、核心术语与关键性质全解析

本文系统介绍了数据结构中树的基本概念和核心性质。首先定义了树作为非线性层次结构的特征,包括根节点、子树等基本要素。然后详细解析了树结构中的关键术语,如节点关系(父子、兄弟等)、节点属性(度、深度、高度等)以及特殊树类型(有序树、森林等)。文章重点阐述了树的四个核心性质:节点数与边数的关系、m叉树的节点数限制、高度与节点数的关联以及节点数对高度的约束。最后列举了树在文件系统、组织结构、算法等领域的广泛应用。全文通过清晰的术语解释和性质推导,为读者建立了对树结构的系统认知,并附有思考题帮助巩固学习效果。

2301_82008805的博客 633

数据结构基础:栈与队列的数组、链表实现完整解析

本文全面解析栈和队列的数组与链表实现。栈遵循后进先出原则,支持压栈、出栈等基本操作,可通过数组或链表实现,需注意栈溢出和下溢问题。队列遵循先进先出规则,数组实现需解决假溢出问题,通常采用循环队列优化,链表实现则更灵活。文中详细对比两种实现方式的区别,并分析时间复杂度,还提供了完整的C++17实现代码。栈和队列作为基础数据结构,在函数调用、递归、表达式求值等场景有广泛应用。

C++ 是一门不原谅粗心的语言,而我恰好喜欢这种不原谅。 我是 x,正在成为更严谨的 C++ 开发工程师的路上。 283

数据结构与算法:基础与进阶

数据结构(Data Structure)是计算机科学中的核心概念,它是指计算机存储、组织数据的方式。数据结构不仅是计算机程序的基础,也是设计和开发高效软件的关键。在编程中,数据结构不仅影响代码的实现和理解,更决定了程序的效率和可扩展性。可以说,掌握数据结构就意味着掌握了高效编程的“武器”。从技术角度看,数据结构是数据的存储与组织方式,通常指一组数据元素之间存在一定关系的集合。每个数据结构都有其独特的存储方式和访问方法,因此,它们适用于不同的应用场景。线性数据结构:数据元素按照一定的顺序排列。

maomi_9526的博客 1293

【Python 基础教程 18】全面解析Python数据结构:入门到自定义实现各种数据结构

Python3作为一门广泛应用的高级编程语言,对数据结构的使用具有其独特的优势。Python3的内置数据类型如列表(Lists)、元组(Tuples)、字典(Dictionaries)和集合(Sets),都可以视为一种特定的数据结构,其高度的可用性和灵活性使得Python在数据处理和算法实现等方面具有显著的优势。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 2897

Java基础:什么是数据结构

一、数据结构1、数据结构的定义  数据结构是计算机存储,组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或存储效率。数据结构往往同高效的检索算法和索引技术有关。(来源于百度百科)2、存储数据的方式1、变量变量声明格式: 数据类型 变量名示例:int age变量赋值:int age = 22;注意事项:需要注意值和类型的匹配...

molihuaya的博客 5413
上一篇: 图论——路径寻找问题(弗洛伊德算法和Dijkstra算法)
下一篇: 数据结构2:线性表
Androids_lost_Sheep
博客等级 码龄8年 1022粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值