数据结构和算法认识

什么是数据结构

数据结构是计算机存储、组织数据的方式。数据结构是存在联系的数据元素具有某种组织方式的集合。(至今无标准的定义)

数据结构分为逻辑结构(就是我们脑里面组织存放数据的方式,比如链状存数据,像树一样存等)和物理存储结构(连续一块空间去存(数组),分散地去存数据(指针串联起来))。

抽象数据结构是由数据结构以及该数据集合的操作集构成。


什么是算法

简单理解,算法就是告诉你怎么样去完成一件事(或者告诉你完成一件事的步骤是什么)。

举个例子,比如给你个任务要让你去摆放图书。那么这个过程就涉及“用什么放”,“怎么放”,“放了怎么取”的问题,这三个问题都与我们解决问题的效率直接相关。其中怎么放和怎么取的问题就涉及算法的设计(换句话说,就是你要完成怎么去完成放书这件事和你要怎么去完成取书这件事)。在这里书就是数据,书柜就是计算机的存储空间。

  • 用什么放,就是挑选我们的数据结构,通常有数组和链表(用这两个可以实现别的其他复杂数据结构)。

  • 怎么放?(为了方便取去放)

1 、 如果图书少量,我们用小书架,我们可以随便乱放,排一排,像宿舍里的书的话乱放然后你也可以快速找到。

2 、图书稍微多了点,我们就要换掉小书架了,因为小书架放不下。那么我们拿个书房(当然,这个空间由操作系统给我们分配),用一个很大书架去放,也是排一排,这时候乱放就不好取了,所以怎么放的算法要变了,我们可以给图书分类,像工科类,艺术类等等。然后取的时候我们就可以按照我们图书的摆放方式(数据结构),较快地去取到书了。

3、后来图书越来越多,我们发现这样不好取了。那么我们在存放数据的时候我们就可以用别的数据结构去放了。比如我们可以用树(逻辑上的树)这数据结构去放,就是把书分类后再分一下系。这样在逻辑上我们可以想象出一棵树。然后我们再用书架去模拟实现一下我们的这个数据结构,因为书架只能一排一排地放,这时候我们就想办法,比如做标记啦,通过给书架加点标签啦,让这种树的结构可以出来。这时候再去取就又方便了。

由此可见,用怎么样的数据结构存放数据直接影响我们对数据操作的效率。