数据结构和算法:Java主程的混淆警告,小心被开除!

发表时间: 2019-05-30 08:15

数据结构

在考虑什么是数据结构时,首先我们先来看这么一个需求:

假如现在要使用python的数据类型来保存《三国演义》里面人物的信息,保存之后该如何最以快方式获取每个人物的相关信息了?

实际上,我们在考虑这个问题时,就已经涉及到了数据结构相关的知识了。

在python中,我们常用列表与字典来存储数据,现在我们就分析一下,如果我们分别使用这两种数据结构的时候,他们的算法效率那个会更好一点:

用列表保存数据:

要获取列表里面每个任务的信息时,我们就要去遍历列表,他的时间复杂度为:O(N)

用字典保存数据:

在使用字典保存人物信息时,我们可将人物的姓名作为字典的键,人物信息作为字典的值。进而查询人物信息时,我们可以不用再去遍历直接通过键就可 以快速找到人物对应的信息。 时间复杂度为O(1)

我们为了解决问题,需要将数据保存下来,然后根据数据的存储方式来设计算法,实现对数据的处理。一般数据的存储方式不同就会导致需要不同的算法进处 理。我们希望算法解决问题的效率越快越好,于是我们就会考虑数据究竟如何保存的问题,这就是数据结构。

上面的问题中,我们选择python中的列表或者字典来存储人物的信息。列表与字典就是python内建帮我们封装好的两种数据结构。

概念:

数据是一个抽象的概念,将其进行分类后得到程序设计语言中的基本类型(python中基本数据类型:int,float,char等)。数据元素之间不是独立的,存在特定的关系,这些关系便是结构。数据结构指数据对象中数据元素之间的关系。

Python给我们提供了很多现成的数据结构类型,这些系统自己定义好的,不需要我们自己去定义的数据结构叫Python的内置数据结构,比如列表、元组、字典。

有些数据组织方式,Python系统里面没有直接定义,需要我们自己去定义实现这些数据的组织方式,这些数据组织方式称之为Python的扩展数据结构,比如栈,队列等。

什么是数据结构

当然就有存储结构和逻辑结构两种,分别研究数据的实际物理存储和理论上的结构形式。 比如在计算机中,数组在物理的存储介质上(存储器)是连续存储的(比如你家柜子上几层的抽屉,每个抽屉都放些东西,东西就是数据),而在逻辑结构,就说它是数组形式了。其他还有链表,队列,栈等。物理的存储形式和逻辑结构都不同。所以说数据结构是数据存储的方式。

什么是算法

通俗的说就是处理数据的方法。但是数据又用不同的数据结构来存储,所以对于不同的数据结构,算法是不同的(比如怎样取出,按什么条件方式取出,怎样存储,按什么条件方式存储,还有在不同的数据结构中的排序,插入数据等等各种操作)。但算法为什么如此之重要呢?因为不同的算法,它的执行效率是不同的,这在实际的工作中式很重要的,还是以数组举例:对数组中的数据排序,我们开始就学过,冒泡法,选择法,擂台法。。。这些算法都是前人总结的方法,但是效率也是有差别的。衡量一个算法的优劣的标准就是它的“时间复杂度(执行完需要的时间)”和“空间复杂度(执行中占用的物理存储空间)”

数据结构与算法之间的区别:

两者区别:数据结构,就是一组数据的存储结构。算法,就是操作数据的一组方法。数据结构是为算法服务的,算法要作用在特定的数据结构之上。

通过前边算法的介绍,与上边数据结构的介绍,想必都对什么是数据结构与算法有了清晰的认识,现在我们来看一下算法与数据结构究竟有什么不同:

数据结构只是静态的描述了数据元素之间的关系。

高效的程序需要在数据结构的基础上设计和选择算法。

程序 = 数据结构 + 算法

总结:数据结构是算法实现的基础,算法总是要依赖于某种数据结构来实现的。往往是在发展一种算法的时候,构建了适合于这种算法的数据结构。一种数据结构如果脱离了算法,那还有什么用呢?实际上也不存在一本书单纯的讲数据结构,或者单纯的讲算法。当然两者也是有一定区别的,算法更加的抽象一些,侧重于对问题的建模,而数据结构则是具体实现方面的问题了,两者是相辅相成的。