首页 > 其他分享 >第1章 绪论

第1章 绪论

时间:2024-09-11 19:52:28浏览次数:3  
标签:绪论 复杂度 元素 算法 3.2 数据结构 数据

目录

1 什么是数据结构?

 2 基本概念与术语阐释

实例深化:

数据结构的基本分类:

 数据类型 vs 抽象数据类型

3 算法与算法分析

3.1 算法

3.2 算法分析

3.2.1 时间复杂度

3.2.2 空间复杂度


1 什么是数据结构?

首先,什么是数据结构呢?数据结构,简而言之,就是那些相互间通过一种或多种特定关系紧密相连的数据元素的集合,它们共同编织出程序的骨架。

数据结构不仅仅是数据的简单集合,它是算法设计和实现的基础。选择合适的数据结构可以显著提高算法的效率,降低计算成本,从而使程序运行得更快、更稳定。在解决复杂问题时,合理的数据结构设计甚至能够决定问题的可解性。

在编程的世界里,我们常常说:

程序 = 算法 + 数据结构。

如果我们把编写程序比作为建造一座房子,算法好比建造房子的设计理念与规划蓝图,数据结构则是挑选出来的建筑材料,它们根据设计蓝图的要求,被精准地放置于建筑的每一个角落。

算法和数据结构是相辅相成的。算法定义了解决问题的步骤和方法,而数据结构则提供了实现这些步骤所需的数据组织形式。优秀的算法设计需要依赖于高效的数据结构来支持,而高效的数据结构也需要通过算法来展现其价值。

 2 基本概念与术语阐释

在计算机科学的广阔领域中,数据、数据元素、数据对象以及数据结构构成了构建知识体系的基石。以下是对这些关键概念及术语的深入解读与实例说明:

数据(Data):作为信息的载体,数据是对现实世界客观事物的抽象表示。在计算机科学的语境下,数据涵盖了所有能够被计算机接收、存储、处理及输出的符号集合。这些符号可以是数字、文字、图像乃至声音。

数据元素(Data Element):作为数据的基本构成单元,数据元素在计算机程序中通常以整体的形式被考虑和处理。一个数据元素可能由多个更细粒度的组成部分——数据项(Data Item)构成,而数据项则是不可再分的最小数据单位,它直接反映了数据的本质特征。

数据对象(Data Object):当多个性质相同或相近的数据元素聚集在一起时,便形成了数据对象。数据对象是数据的一个子集,它体现了特定类型数据的集合性特征。

数据结构(Data Structure):数据结构的核心在于揭示数据元素之间的内在联系与特定关系。它不仅仅是一种数据的组织形式,更是一种存储、检索及处理数据的逻辑结构

实例深化

想象一下,你正在构建一个在线学习平台,专注于计算机科学的各个领域。在这个平台上,“学习计算机所需的书籍”便成为了一个核心的数据对象。每本书籍(如《数据结构》、《计算机导论》、《C++程序设计》等)作为独立且完整的数据元素,被赋予了丰富的数据项,包括书名、作者、出版社、出版时间、ISBN码以及详细的内容简介等。

为了优化用户体验,你采用了多种数据结构来组织和管理这些书籍信息。首先,你利用哈希表(Hash Table)根据书名或ISBN码实现了书籍的快速检索;其次,你构建了分类树(Classification Tree),根据书籍的主题、难度等属性进行了精细化的分类与排序;最后,你还引入了图状结构(Graph Structure)来表示书籍之间的引用关系与推荐链,帮助用户发现更多有价值的学习资源。

数据结构的基本分类:

上面示例中所提到的哈希表,分类树,图状结构都是常见的数据结构。

根据数据元素之间关系的不同特性,通常有以下4类基本的结构:

  • 集合(Set)
    • 集合是一种简单而直接的数据结构,其内部元素之间除了共同隶属于该集合外,不存在其他任何显式关系。这种结构的核心特点在于元素的无序性与不重复性,即集合中的每个元素都是唯一的,且没有特定的排列顺序。
  • 线性结构(Linear  Structure)        
    • 线性结构则展现了数据元素之间一对一的紧密关系,它们按照某种线性顺序排列,形成了一条有序的数据链。
  • 树形结构(Tree Structure)
    • 树形结构将数据元素组织成一个具有层次关系的树状网络,其中每个元素(除根节点外)都恰好有一个前驱元素,并可以有零个或多个后继元素。这种一对多的关系使得树形结构在表示具有层级或分类关系的数据时尤为有效。
  • 图状机构或网状结构(Graph Structure)
    • 图状结构或网状结构是数据结构中最复杂也最灵活的一种,它允许数据元素之间存在多个对多个的关系。这种结构能够直观地表示现实世界中复杂多变的网络关系。

 数据类型 vs 抽象数据类型

数据类型抽象数据类型(ADT)
定义变量或表达式的值的性质和范围,决定了变量能够存储的数据种类和操作一种理论工具,用于描述数据结构及其上的操作,而不需要具体说明这些数据结构在计算机中的表示方式。
分类基本数据类型(整数、浮点数、字符、布尔值)和复合数据类型(数组、结构体、类、枚举)。侧重于数据结构的逻辑特性和操作,不关心物理实现。
用途提供基本和复合的数据表示方式,用于存储和操作数据。为程序员提供高级别的数据模型,提高编程效率和代码质量。
关注点数据的具体表示方式和操作。数据结构的逻辑特性和操作,独立于物理实现。

3 算法与算法分析

可以看一下我之前写的文案

什么是算法?

3.1 算法

一个算法具有以下重要特征。

有穷性:算法必须在执行有限个步骤之后终止,即算法的执行时间是有限的。(算法必须在有限步骤内完成。)

确定性:算法的每一步骤都必须有明确的定义,即每一步的执行都是没有歧义的,算法的描述不应有模棱两可的情况。(算法中的每一步骤都必须是明确无误的。)

输入:算法可以具有零个或多个输入,这些输入是算法开始执行前所需要的已知条件或数据。(算法需要接收明确规定的输入。)

输出:算法至少应有一个输出,它是算法执行完成后得到的结果。该结果应与输入有某种确定的关系。(算法必须产生符合要求的输出。)

可行性:算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的,即算法中的操作必须是足够基本的,可以在有限时间内完成。(算法中的每一个操作都必须是有效的,并能被精确执行) 

 之前提到过,编程就像建筑。 在编程的实践中,选择恰当的数据结构,就如同选用最适合的建筑材料。它不仅能够优化程序的性能,减少资源消耗,还能使代码更加清晰、易于维护。正如建筑师在选材时会考虑材料的耐久性、成本及美观性,程序员在选用数据结构时,也会综合考虑其适用性、效率与易用性。

判断一个算法的好坏通常基于以下几个标准:

  • 正确性:算法必须能正确解决问题。
  • 可读性:算法应易于理解和维护。
  • 健壮性:算法应能处理异常输入,避免因错误输入而崩溃。
  • 效率与资源消耗:算法应尽可能高效地运行,并减少存储和计算资源的消耗。

3.2 算法分析

在代码正确的前提下,通常情况下通过时空复杂度(时间复杂度与空间复杂度)来区分算法的好坏。

详细可看我之前发的文章。时空复杂度

3.2.1 时间复杂度

时间复杂度,顾名思义,计算的是代码运行所花费的时间。但是我们知道,一个程序是在电脑上运行的,而电脑不同,同一个程序的运行时间也是不同的。同样的一套程序,我们用十年前的电脑和现在的电脑分别运行,最终的运行时间肯定是不同的。

所以,此处所说的时间复杂度并不是真正的代码运行所需的时间,而是一个程序中 代码所运行的次数 。然后将这个次数写成一个 数学函数表达式。此时,这个表达式就是这个程序的时间复杂度。

我们通常通过计算算法中基本操作(如赋值、比较、循环等)的执行次数来评估时间复杂度。这种评估方法采用大O渐进表示法,即只关注执行次数的最高次项,并忽略低次项和系数。
​​​​

3.2.2 空间复杂度

空间复杂度则关注算法在执行过程中临时占用的存储空间大小。这里的“空间”主要指算法运行过程中创建的变量个数,而非程序实际占用的物理内存字节数。同样采用大O渐进表示法来量化空间复杂度。 

最后,全部笔记如下:

谢谢大家!! 

标签:绪论,复杂度,元素,算法,3.2,数据结构,数据
From: https://blog.csdn.net/2302_81681363/article/details/142067172

相关文章

  • 数据结构绪论
    数据结构绪论数据结构基础:线性数据结构+非线性数据结构线性数据结构:线性表(链表),栈,队列,一维数组,串非线性数据结构:二维数组,多维数组,广义表,树+二叉树,图数据结构应用:查找+排序查找:静态查找,动态查找排序:内部(针对内存)排序(插入类,交换类,归并累,选择类),外部排序(硬盘)数据结构基本概念......
  • 数据结构-绪论
    1.可以用抽象数据类型定义有一个完整的数据类型。抽象数据类型包括数据对象,数据关系,抽象运算。数据结构:逻辑结构+数据运算。2.有序表属于逻辑结构。有序表是一种逻辑结构,它只描述了数据元素之间的逻辑关系,而与实际的物理存储方式无关。这种逻辑上的有序性意味着表中的元素......
  • 54.《数据结构绪论处解》
    结构和算法为程序的核心所在先谈数据和信息的关系之前计基中背诵理解的数据是信息的具体表现形式数据是信息的载体信息的符号化是数据是数据加工后的结果为了弄清五个XX概念我最烦的就是xiajiba的概念数据数据元素数据对象数据类型数据结构废话不多说上图语......
  • 【信息论基础】信息路基础绪论——信息的概念,信息量和信息熵,数字通信系统模型
    1.、信息的定义:事物运动状态或存在方式的不确定状态(fromShannon)2、信息是有大小之分的。3、信息量(自信息)的计算如下:4、我们使用信息熵(informationentropy)这一概念来描述 信息的平均不确定度:(1)例1:对于一个信源的输出有x1~x8,对应的码字输出分别为000,001,010,011,100,10......
  • 【数据结构与算法第二章(理论知识)】绪论:数据结构的定义、算法的基本概念和算法效率分析
     目录【数据结构与算法第二章(理论知识)】绪论1.1数据结构的定义1.2算法的基本概念1.3算法效率分析1.3.1时间复杂度1.3.2空间复杂度【数据结构与算法第二章(理论知识)】绪论1.1数据结构的定义    数据结构没有一个统一的官方定义,以下是一些经典书籍对数据......
  • 周志华机器学习西瓜书学习笔记(一)| 第一章 绪论
    1.引言    机器学习(machinelearning,ML)是一门研究如何通过计算的手段,利用经验来改善系统自身性能的学科。由于在计算机系统中,“经验”通常以数据形式储存,因此,机器学习研究的主要内容,是关于在计算机上从数据中产生模型(model)的算法,称作“学习算法”*(learningalgorith......
  • 【机器学习】西瓜书第一章 绪论
    参考资料:[1]周志华.机器学习[M].清华大学出版社,2016.一、引言我们生活中存在许多基于经验做出的判断,比如月明星稀,那第二天可能会是好天气;一个西瓜敲起来声音响,色泽也不错,大概率是一个好瓜。我们做出这样判断的原因是我们观察到了很多月明星稀之后的好天气,吃到了很多符合......
  • 数据结构详细教程绪论
    ......
  • 数据结构(一)-绪论
    数据结构(一)-绪论梗概:1.数据1.1数据数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号集合,数据是计算机程序加工的原料。1.2数据元素数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可有若......
  • 数据结构-绪论2(算法,时间复杂度)
    算法的基本概念算法是什么       程序=数据结构+算法算法的五个特性有穷性确定性可行性输入输出算法的复杂度时间复杂度算法时间复杂度事前预估算法时间开销T(n)与问题规模n的关系这里以一层,两层,多层循环为例一层循环for(inti=0;i<n;i++){i......