算法是数据结构与算法的简称
2.1 什么是数据结构?
Data Structure
简单的理解,数据结构就是:存储数据的不同方式

假如我们把5个数据比作5个鸡蛋,我们可以把它们放到一个管子里,也可以把它们放到一个框子里,这就是不同的存储方式。存储数据的不同方式就是不同的数据结构。
引申:加入我们有2,4,7,1,6,3,5个数,我们如何来存储?
我们最容易想到的方式就是把其个数挨个紧紧排在一起,中间没有任何空隙,如图所示,在计算机中我们叫做数组(实际上,)。数组的每一个存储单元大小都一样,每一个整数放到一个单元格里面。

我们还可以使用另外一种方式,每一个小格除了存储自己的数据以外,还存着指向下一个小格的指针(链条),这样的存储方式叫做链表。
数据的存储方式有很多种,对于不同的问题我们会采取不同的存储方式,这就是我们要学的数据结构。
2.2 什么是算法(Algorithm)?
算法是同一个问题的不同解决方法。
如下面的计算题:1+2+3+......+99=?
方式一:我们使用最简单的方式就是1先加2,再加3,再加4,以此类推。
方式二:我们还可以分别计算1加99,2+98,3+97,以此类推。
同一个问题,我们有不同的解决办法,这就是算法。而算法往往是针对特定的数据结构的。
- 假设1:对于1中的链表这种数据结构,我们如何往链表里面的7和1插入一个0?
这时候我们只需要将7和1中的链条打断,让7中的链条指向0,0中的链条指向1,这时候就构成了一个新的链条,这就完成了。
- 假设2:对于1中的数组,我们如歌在7和1之间插入0?
那么这个算法就稍微麻烦一些了。数组之间没有空隙,我们插入不了,因此可以采取以下办法:我们重新分配一块新的空间,这是的新空间要比原来的空间要大一个单元格,也就是一个单位的数据大小。这时候先把2、4、7复制下来,再把0插进去,最后把1、6、5、3复制下去,如下图所示

由上面我们可以看出,对于插入算法来说,链表要比数组简单的多。当然,不能说数组就不如链表,有很多的操作数组要比链表快得多,比如说我们想访问第6个数。对于链表来说我们必须从第一个数开始,先找到第一个数,再根据第一个数顺着链条往后找,最终才能找到。二对于数组来说,找第6个数就很简单,只要知道单元格的大小,直接往后跨越6个单元格,就可以找到第6个数,所以查找对于数组来说,要比链表快。
所以,对不同的数据结构,在不同的应用场景中有不同优点和缺点,所以,选择什么样的数据结构,要根据特定的问题来决定。
总结来说,数据结构就是存储数据的不同方式,算法就是解决问题的不同方法,而算法往往是针对不同的数据结构的。