数据结构——学习框架

2019-08-21  本文已影响0人  Matteo_2f84

本文都是我个人的理解,很多定义是自己下的可能不大严谨,但是有助于把知识串联起来。若有原则性错误,希望能不吝指正。


  要学习数据结构这门课,第一步遇到的问题是数据结构这门学科是什么?” ,“为什么要有数据结构,它解决了什么问题?”

要解决这个问题我们需要理解,程序到底是什么

    背景知识: 程序是什么?计算机是一组机器,程序从本质上来看是对计算机的控制指令。就像我们控制汽车方向盘,把它用特殊的语言描述出来也可以理解成这是汽车的程序。那么转动方向盘这个程序,不可能只有左边右边两个方向,我们需要数据描述转动的具体角度。由此可以理解程序离不开数据。 

   计算机程序的特殊性在于它极端复杂, 程序的不同,用到的数据量也不同。既然有了数据,那么必然需要对数据的存储方式、操作进行管理,因此也就产生了数据结构这门学科。 


有了以上的铺垫,现在我们可以对数据结构下定义。(定义可能不太严谨,但大概是那么个意思)

数据结构是什么?     数据结构是一门学习组织管理、以及操作数据的一门学科。 

 它的作用是什么?     对数据进行组织与管理,提高程序效率。 


数据结构的一大作用是提高程序效率。

显然,完成一个功能时间越短,程序运行效率越高。

程序运行的时间与什么有关:1、算法 ,2、数据结构 ,3、与计算机硬件以及环境有关的因素。

为了了解数据结构到底是如何在提高程序效率起作用的,我们有必要理解什么是算法。

算法是完成目的的有限次步骤。我们把完成某项功能的步骤称为算法,算法是用来解决问题的,因此它具有几个特点。

1、有穷性(算法必须是能够被结束的,否则这件事情永远也完成不了)

2、算法一定有输入和输出

3、可行性(算法可以被执行)

4、确定性(算法不能有歧义)


有了数据结构与算法的概念,这两个概念是如何互相影响的。下面,有这样一个问题。

                                           输入一串数字,对其进行排序后输出。

无论用什么算法,都需要将数据存储到计算机中,因此,会涉及到具体怎么样存储数据。

以下面两种存储方式为例:

    1、使用数组存储。

    2、使用单链表存储。

算法受到存储方式的限制,例如链式排序就无法使用快速排序、堆排序等方法。自然也就影响了解决问题的效率。

不存在一种通用最优的算法,算法的选择与问题本身的性质有很大关联。每个算法都有自身的特性,如快速排序的性能会在输入数字基本有序的时候退化成O(n^2),而堆排序不会。如果输入的数字很有特点,基本有序,这时候我们就不应该选择普通的快速排序,而应选择其它算法。

因此,通过对数据结构这么课程的学习,我们会得到一种分析问题的能力,这种能力帮助我们在遇到问题时,选择合适的存储方式,合适的算法来解决问题,尽可能提高解决问题的效率。

上一篇下一篇

猜你喜欢

热点阅读