数据结构学的到底是什么?和算法有什么关系

2020-11-22 18:20:59 字数 4655 阅读 9877

1楼:河蟹蛇荟

首先,数据结构是一门计算机语言学的基础学科,它不属于任何一门语言,其体现的是几乎所有标准语言的算法的思想。

上面的概念有一些模糊,我们现在来具体说一说,相信你门的数据结构使用的是一门具体的语言比如c/c++语言来说明,那是为了辅助的学习数据结构,而数据结构本身不属于任何语言(相信你把书上的程序敲到电脑里面是不能通过的吧,其只是描述了过程,要调试程序,还需要修改和增加一些东西)。你们的书上开始应该在讲究数据的物理存储结构/逻辑存储结构等概念,说明数据结构首先就是“数据的结构”,在内存上的存储方式,就是物理的存储结构,在程序使用人员的思想上它是逻辑的。比如:

你们在c/c++中学习到链表,那么链表是什么一个概念,你们使用指针制向下一个结点的首地址,让他们串联起来,形成一个接一个的结点,就像显示生活中的火车一样。而这只是对于程序员的概念,但是在内存中存储的方式是怎样的那?对于你程序员来说这是“透明”的,其内部分配空间在那里,都是随机的,而内存中也没有一个又一根的线将他们串联起来,所以,这是一个物理与逻辑的概念,对于我们程序员只需要知道这些就可以了,而我们主要要研究的是“逻辑结构”。

我可以给你一个我自己总结的一个概念:所有的算法必须基于数据结构生存。也就是说,我们对于任何算法的编写,必须依赖一个已经存在的数据结构来对它进行操作,数据结构成为算法的操作对象,这也是为什么算法和数据结构两门分类不分家的概念,算法在没有数据结构的情况下,没有任何存在的意义;而数据结构没有算法就等于是一个尸体而没有灵魂。

数据结构学的到底是什么,和算法的关系

2楼:百度用户

本人乃一个数据痴迷

者,在计算机的道路上,也是一个数据结构的痴迷者,现在大学里面和同学搞开发也痴迷于数据库,我就我个人的理解给你谈一谈:

首先,数据结构是一门计算机语言学的基础学科,它不属于任何一门语言,其体现的是几乎所有标准语言的算法的思想。

上面的概念有一些模糊,我们现在来具体说一说,相信你门的数据结构使用的是一门具体的语言比如c/c++语言来说明,那是为了辅助的学习数据结构,而数据结构本身不属于任何语言(相信你把书上的程序敲到电脑里面是不能通过的吧,其只是描述了过程,要调试程序,还需要修改和增加一些东西)。你们的书上开始应该在讲究数据的物理存储结构/逻辑存储结构等概念,说明数据结构首先就是“数据的结构”,在内存上的存储方式,就是物理的存储结构,在程序使用人员的思想上它是逻辑的,比如:

你们在c/c++中学习到链表,那么链表是什么一个概念,你们使用指针制向下一个结点的首地址,让他们串联起来,形成一个接一个的结点,就像显示生活中的火车一样。而这只是对于程序员的概念,但是在内存中存储的方式是怎样的那?对于你程序员来说这是“透明”的,其内部分配空间在那里,都是随机的,而内存中也没有一个又一根的线将他们串联起来,所以,这是一个物理与逻辑的概念,对于我们程序员只需要知道这些就可以了,而我们主要要研究的是“逻辑结构”。

我可以给你一个我自己总结的一个概念:所有的算法必须基于数据结构生存。也就是说,我们对于任何算法的编写,必须依赖一个已经存在的数据结构来对它进行操作,数据结构成为算法的操作对象,这也是为什么算法和数据结构两门分类不分家的概念,算法在没有数据结构的情况下,没有任何存在的意义;而数据结构没有算法就等于是一个尸体而没有灵魂。

估计这个对于算法的初学者可能有点晕,我们在具体的说一些东西吧:

我们在数据结构中最简单的是什么:我个人把书籍中线性表更加细化一层(这里是为了便于理解在这样说的):单个元素,比如:

int i;这个i就是一个数据结构,它是一个什么样的数据结构,就是一个类型为int的变量,我们可以对它进行加法/减法/乘法/除法/自加等等一系列操作,当然对于单个元素我们对它的数据结构和算法的研究没有什么意义,因为它本来就是原子的,某些具体运算上可能算法存在比较小的差异;而提升一个层次:就是我们的线性表(一般包含有:顺序表/链表)那么我们研究这样两种数据结构主要就是要研究它的什么东西那?

一般我们主要研究他们以结构为单位(就是结点)的增加/删除/修改/检索(查询)四个操作(为什么有这样的操作,我在下面说到),我们一般把“增加/删除/修改”都把它称为更新,对于一个结点,若要进行更新一类的操作比如:删除,对于顺序表来说是使用下标访问方式,那么我们在删除了一个元素后需要将这个元素后的所有元素后的所有元素全部向前移动,这个时间是对于越长的顺序表,时间越长的,而对于链表,没有顺序的概念,其删除元素只需要将前一个结点的指针指向被删除点的下一个结点,将空间使用free()函数进行释放,还原给操作系统。当执行检索操作的时候,由于顺序表直接使用下标进行随机访问,而链表需要从头开始访问一一匹配才可以得到使用的元素,这个时间也是和链表的结点个数成正比的。

所以我们每一种数据结构对于不同的算法会产生不同的效果,各自没有绝对的好,也没有绝对的不好,他们都有自己的应用价值和方式;这样我们就可以在实际的项目开发中,对于内部的算法时间和空间以及项目所能提供的硬件能力进行综合评估,以让自己的算法能够更加好。

(在这里只提到了基于数据结构的一个方面就是:速度,其实算法的要素还应该包括:稳定性、健壮性、正确性、有穷性、可理解性、有输入和输出等等)

为什么要以结点方式进行这些乱七八糟的操作那?首先明确一个概念就是:对于过程化程序设计语言所提供的都是一些基础第一信息,比如一些关键字/保留字/运算符/分界符。

而我们需要用程序解决现实生活中的问题,比如我们要程序记录某公司人员的情况变化,那么人员这个数据类型,在程序设计语言中是没有的,那么我们需要对人员的内部信息定义(不可能完全,只是我们需要那些就定义那些),比如:年龄/性别/姓名/出生日期/民族/工作单位/职称/职务/工资状态等,那么就可以用一些c/c++语言描述了,如年龄我们就可以进行如下定义:

int age;/*age变量,表示人员公司人员的年龄*/

同理进行其他的定义,我们用结构体或类把他们封装成自定义数据类型或类的形式,这样用他们定义的就是一个人的对象的了,它内部包含了很多的模板数据了。

我就我个人的经历估计的**量应该10000以内的(我个人的经理:只是建议,从你的第一行**开始算,不论程序正确与否,不论那一门语言,作为一个标准程序员需要十万行的**的功底(这个是我在大学二年级感觉有一定时候的大致数据,不一定适合其他人),而十万行**功底一般需要四门基础远支撑,若老师没有教,可以自学一些语言)。

3楼:匿名用户

所有的算法,乃至数学在实际运用中都是要根据不同的数据来选择不同的方法,所以一般学习过算法和数据结构的人都会越发的认识到,数据才是程序的中心,只有找到了一个组织数据的最佳方式,算法的运用才会事半功倍。

一般来说我觉得先学算法比较好,但算法和数据结构都是相辅相成的,要学好算法要有一定数据结构的基础,要学数据结构亦要有算法基础。但算法比数据结构更重要一些,因为没有算法只有数据结构是没用的。

数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。

从计算机的角度讲,程序是用一种计算机能理解并执行的计算机语言描述解决问题的方法步骤。程序设计:是分析解决问题的方法步骤,并将其记录下来的过程。算法:解决问题的方法步骤。

1.数据结构或者算法之类不是直接运行的东西。数据结构,大约就是关于怎样使用变量能更有效率的理论。

算法么,比较象数学公式,不过代进去的不是数据或变量,而是c的语句。是关于怎样安排程序才能事半功倍的理论。

4楼:匿名用户

数据结构和算法其实学习的是一种思维,数据结构常见的有

1,数组

5楼:匿名用户

数据结构与算法的重要性,是众所周知的,作为开发人员都想攻克它,但大部分人坚持一下都放弃了。可能是因为知识点太多、不知从何开始学起,也可能是没找对学习方法,也可能是没找到好的学习资料。如果你还在迷茫中,相信本课程能够帮到你,是你彻底掌握数据结构与算法的美好开始。

为了保证同学们能循序渐进、全方位地掌握数据结构与算法,mj将本课程将设计为至少3个季度(预计共100小时左右)

第1季侧重于经典数据结构(比如二叉树、哈希表、trie等)

第2季侧重于更高级的数据结构(比如图、并查集、跳表、布隆过滤器等)以及各种算法

(比如排序、kmp、贪心、分治、动态规划等)

第3季侧重于leetcode题库和算法面试真题(比如海量数据处理、字符串处理等)

在掌握数据结构的前提下,再学习常用的经典算法,最后再进行大量的算法题目练习,将会是个非常利于消化吸收、比较合理的学习路线。整套课程学习下来,相信以后不管是算法面试,还是工作应用,都能够熟练使用数据结构与算法。

请问数据结构和算法二者之间究竟是什么关系?应该先学哪一个?

6楼:匿名用户

一般来说我觉得先学算法比较好,但算法和数据结构都是相辅相成的,要学好算法要有一定数据结构的基础,要学数据结构亦要有算法基础。但算法比数据结构更重要一些,因为没有算法只有数据结构是没用的~

7楼:匿名用户

数据结构+算法=程序

就是说两者是同样重要,c语言的经典算法都是很难的,数据结构也不好学,不过就是要想编出高质量的程序,数据结构必须学好,所以建议你,不要分开看,最好是一起看,虽然这样比较难,可是只要选择了,就不要怕困难,要想学好程序,不下苦工是不行的。

8楼:匿名用户

数据结构.

其实你在

学数据结构时也已经学算法了,两者分不开,试问下,你学数据结构就只学什么是数据结构,有什么类型?肯定离不了上机操作,写程序,所以说不用区分这么详细.

如果不知道数据结构,那些算法中讲个结构你不懂,还是得回去看数据结构.

再:turbo c ?界面挺难用的,调试不方便,建议换个编译器,大部分;c++编译器都能编译c,如dev-cpp,vc..

学数据结构有什么用,数据结构学习些什么内容,学习数据结构有什么意义,有哪些运用

1楼 大爱研子 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计 算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这 是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件 能够熟练地选择和设计各种数据结构和算法。 至少要能够熟练地...

物联网,人工智能,大数据,云计算到底是什么关系

1楼 匿名用户 云计算是未来一种发展趋势。 以大数据 物联网 人工智能 5g为核心特征的数字化浪潮正席卷全球,车联网 工业物联网 人工智能生物识别带来的海量异构化数据,高带宽 低时延等新业务个性化需求。未来,云计算存储技术需求会越来越强烈,无论是个人还是企业,向云端转型都是一种趋势。 小鸟云专注为个...

学习数据结构的目的是什么?有什么好处?为哪些课程做准备

1楼 风扇一直响 计算机核心课程,程序 算法 数据结构,数据结构的重要性可见一斑。事实上,想要写出优美高效的 ,数据结构的知识一定要有的,学习的过程中更重要的是去理解它的思想。 感觉能用到程序的课程都离不开数据结构,像软件工程,操作系统等等 学习《数据结构》课程的主要目的是什么 2楼 诗殇涅槃 学了...