数据结构和算法不一样吗?
不一样。
计算机算法和数据结构 计算机算法和数据结构的区别
数据结构,无论复杂或简单,只是数据。
算法是计算机可执行的数值计算方法,它加工数据,产出数据。
数据是原料和制成品。
算法是工厂,是生产流水线。
算法和数据有关,但两者不一样。
蛋糕厂同鸡蛋,面粉有关,但蛋糕厂不同于原料。
不一样。
说白一点:
算法是完成某件事的方法
数据结构是实现这个方法的方法。
程序就是数据结构+算法
不是!
算法是属于数据结构的!
数据结构是为编程找最简单的路径!
举例来说明最好了
都知道数据库吧
那个可以看作为仓库
而数据结构是说仓库中的物品的摆放方式,如Tree,List...
而算法是说摆放物品的行为方式,比如是塞进仓库,拉进去,还是推进去
什么是数据结构和算法分析?在编程里起到什么作用?
什么是数据结构和算法?
数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中,算法就是操作数据的方法。
数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。 因此,我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。数据结构是静态的,它只是组织数据的一种方式。如果不在它的基础上操作、构建算法,孤立存在的数据结构就是没用的。
在编程中的作用?
刚开始学习编程时有一种误解,会编程就行,研究什么数据结构啊?数据结构与算法能够帮你如何快速把现实问题转化为计算机语言。到底该怎么转化?《数据结构》已经给出了指引:设计出数据结构,在施加以算法就行了,当然现实问题会更复杂,需要框架,类库,模式等支撑,具体的知识可以去小码哥李明杰了解。
这是一种非常重要的逻辑思维能力的锻炼,也是程序员入门的条件。很多半路出家的人, 仅仅上了个培训班后参加工作,写出的代码实在是惨不忍睹,很明显只掌握了工具,逻辑思维的训练远远不足。
总结一下,学习完数据结构其实会潜移默化的影响你的逻辑思维,当然,你需要多多练习才有可能使用纯熟,等它变成身体一部分以后,你就发现其实大部分编程任务都没什么难度了,更难的其实是对编程更高的要求:抽象的能力。
开发软件的时候,总会遇到需要针对数据计算结果的时候,怎么用计算机语言把计算过程表示出来,就是算法了。
什么是数据结构和算法?
数据结构,Data_Structure,其中D是数据元素的集合,R是该集合中所有元素之间的关系的有限集合。数据结构则是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
数据结构是计算机专业学生在大学期间都会学习的一门课程,但是由于课程偏理论,缺乏实际操作的学习体验,而让大家产生了一种“数据结构不重要,我只要学习了Java/C语言/Python同样能敲代码”的错觉,但其实它是一门集技术性、理论性和实践性于一体的课程。
算法是某一系列运算步骤,它表达解决某一类计算问题的一般方法,对这类方法的任何一个输入,它可以按步骤一步一步计算,最终产生一个输出。
小码哥的李明杰也说过所有的计算问题,都离不开要计算的对象或者要处理的信息,如何高效的把它们组织起来,就是数据结构关心的问题,所以算法是离不开数据结构的,这就是数据与算法。
一种结构
数据结构和算法是一回事么?
有这两门的课程视频建议你可以看看。
看看这个是否适合你,希望可以帮到你!
数据结构是计算机存储、组织数据的方式。
算法是指完成一个任务准确而完整的描述。也就是说给定初始状态或输入数据,经过计算机程序的有限次运算,能够得出所要求或期望的终止状态或输出数据。
楼上说的没错.
至于为什么数据结构和算法总是在一起出现,是因为它们两个构成了程序设计.
就是说:程序设计=数据结构设计+算法设计.
什么是数据结构和算法
本人乃一个数据痴迷者,在计算机的道路上,也是一个数据结构的痴迷者,现在大学里面和同学搞开发也痴迷于数据库,我就我个人的理解给你谈一谈:
首先,数据结构是一门计算机语言学的基础学科,它不属于任何一门语言,其体现的是几乎所有标准语言的算法的思想。
上面的概念有一些模糊,我们现在来具体说一说,相信你门的数据结构使用的是一门具体的语言比如C/C++语言来说明,那是为了辅助的学习数据结构,而数据结构本身不属于任何语言(相信你把书上的程序敲到电脑里面是不能通过的吧,其只是描述了过程,要调试程序,还需要修改和增加一些东西)。你们的书上开始应该在讲究数据的物理存储结构/逻辑存储结构等概念,说明数据结构首先就是“数据的结构”,在内存上的存储方式,就是物理的存储结构,在程序使用人员的思想上它是逻辑的,比如:
你们在C/C++中学习到链表,那么链表是什么一个概念,你们使用指针制向下一个结点的首地址,让他们串联起来,形成一个接一个的结点,就像显示生活中的火车一样。而这只是对于程序员的概念,但是在内存中存储的方式是怎样的那?对于你程序员来说这是“透明”的,其内部分配空间在那里,都是随机的,而内存中也没有一个又一根的线将他们串联起来,所以,这是一个物理与逻辑的概念,对于我们程序员只需要知道这些就可以了,而我们主要要研究的是“逻辑结构”。
我可以给你一个我自己总结的一个概念:所有的算法必须基于数据结构生存。也就是说,我们对于任何算法的编写,必须依赖一个已经存在的数据结构来对它进行操作,数据结构成为算法的操作对象,这也是为什么算法和数据结构两门分类不分家的概念,算法在没有数据结构的情况下,没有任何存在的意义;而数据结构没有算法就等于是一个尸体而没有灵魂。估计这个对于算法的初学者可能有点晕,我们在具体的说一些东西吧:
我们在数据结构中最简单的是什么:我个人把书籍中线性表更加细化一层(这里是为了便于理解在这样说的):单个元素,比如:int i;这个i就是一个数据结构,它是一个什么样的数据结构,就是一个类型为int的变量,我们可以对它进行加法/减法/乘法/除法/自加等等一系列操作,当然对于单个元素我们对它的数据结构和算法的研究没有什么意义,因为它本来就是原子的,某些具体运算上可能算法存在比较小的差异;而提升一个层次:就是我们的线性表(一般包含有:顺序表/链表)那么我们研究这样两种数据结构主要就是要研究它的什么东西那?一般我们主要研究他们以结构为单位(就是结点)的增加/删除/修改/检索(查询)四个操作(为什么有这样的操作,我在下面说到),我们一般把“增加/删除/修改”都把它称为更新,对于一个结点,若要进行更新一类的操作比如:删除,对于顺序表来说是使用下标访问方式,那么我们在删除了一个元素后需要将这个元素后的所有元素后的所有元素全部向前移动,这个时间是对于越长的顺序表,时间越长的,而对于链表,没有顺序的概念,其删除元素只需要将前一个结点的指针指向被删除点的下一个结点,将空间使用free()函数进行释放,还原给操作系统。当执行检索操作的时候,由于顺序表直接使用下标进行随机访问,而链表需要从头开始访问一一匹配才可以得到使用的元素,这个时间也是和链表的结点个数成正比的。所以我们每一种数据结构对于不同的算法会产生不同的效果,各自没有绝对的好,也没有绝对的不好,他们都有自己的应用价值和方式;这样我们就可以在实际的项目开发中,对于内部的算法时间和空间以及项目所能提供的硬件能力进行综合评估,以让自己的算法能够更加好。
(在这里只提到了基于数据结构的一个方面就是:速度,其实算法的要素还应该包括:稳定性、健壮性、正确性、有穷性、可理解性、有输入和输出等等)
为什么要以结点方式进行这些乱七八糟的操作那?首先明确一个概念就是:对于过程化程序设计语言所提供的都是一些基础第一信息,比如一些关键字/保留字/运算符/分界符。而我们需要用程序解决现实生活中的问题,比如我们要程序记录某公司人员的情况变化,那么人员这个数据类型,在程序设计语言中是没有的,那么我们需要对人员的内部信息定义(不可能完全,只是我们需要那些就定义那些),比如:年龄/性别/姓名/出生日期/民族/工作单位/职称/职务/工资状态等,那么就可以用一些C/C++语言描述了,如年龄我们就可以进行如下定义:
int age;/*age变量,表示人员公司人员的年龄*/
同理进行其他的定义,我们用结构体或类把他们封装成自定义数据类型或类的形式,这样用他们定义的就是一个人的对象的了,它内部包含了很多的模板数据了。
我就我个人的经历估计的代码量应该10000以内的(我个人的经理:只是建议,从你的第一行代码开始算,不论程序正确与否,不论那一门语言,作为一个标准程序员需要十万行的代码的功底(这个是我在大学二年级感觉有一定时候的大致数据,不一定适合其他人),而十万行代码功底一般需要四门基础远支撑,若老师没有教,可以自学一些语言)。
什么是数据结构?什么是算法?算法与程序有什么关系?
数据结构就是计算机存储、组织数据的方式,它是人们为了实现各种各样的算法和程序而设计出来的,具有一定性质或规律。比如栈可以用来实现递归算法的非递归化,图可以用来处理网络问题。
算法你可以理解为用程序解决实际问题的方法。比如排序算法,查找算法。
程序就是基于某种或某几种数据结构,采用某种算法或某几种算法去解决问题的过程。
相互之间存在一种或多种特定关系的数据元素的集合。(起始关于什么是数据结构,并没有严格的定义)
算法是对特定问题求解步骤的一般描述,是有限指令的集合。
程序=算法+数据结构(C语言)
拿华腾的交通卡系统做例子吧
先说数据结构:
程序里面有很多用户信息,这些信息是用结构体存放,是用链表的形式,还是用哈希表等等的方法进行排列,这个就是数据结构
算法:
要从这些数据结构里找出一个结点,是用遍历搜索呢还是用折半搜索之类的方法,叫做算法。
lz可以体会下。