数据结构、算法及应用

1 绪论

2018-01-01  本文已影响0人  coderjiege

1.1 什么是数据结构(Data Structure)

数据结构是对现实世界中数据及其关系的某种映射,既可以表示数据本身的物理结构,也可以表示计算机中的逻辑结构。

1.1.1 数据的逻辑结构(Logical Structure)

数据的逻辑结构由数据结点(Node)和连接两个结点的边(Edge)组成

  1. 结点的数据类型:
  1. 结点的分类

线性结构和树形结构的区别:每个结点是否具有一个直接后继;树形结构和图结构的区别:每个结点是否仅仅从属于一个直接前驱

1.1.2 数据的存储结构

数据的存储结构就是建立一种逻辑结构到物理结构的映射。4种常用存储映射的方法:


1.2 算法与算法设计

1.2.1 算法的概念

算法(Algorithm)是为解决某一特定问题而采取的具体而有限的操作步骤。程序是算法的一种实现,计算机按照程序逐步执行算法,实现对问题的求解。算法性质:

1.2.2 算法设计

1.3 算法分析

1.3.1 算法的渐进分析

o(1)、o(n)、o(nlogn)、o(n^2)、o(a ^ n)(指数增长):在n很大的时候其大小差别非常大。
具有指数增长率的算法简称指数爆炸型算法,在应用时需要谨慎使用。
循环中嵌套循环会增加算法的复杂度,但也并非总是如此。

for (i = 4; i < n; i++) 
for (j = i - 3; sum = a[i - 4]; j <= i; j++)
    sum += a[i];

此时,外层循环n-4次,对每个i而言,内层循环只执行4次,每次的操作次数与i的大小无关,尽管存在循环嵌套,但算法的整体时间复杂度依然呈线性增长。

1.3.2 最坏、最好和平均情况

最好情况:帮助了解某个算法在何种情况下使用好。
最坏情况:帮助了解某个算法至少能做多快,这点在实时系统中尤其重要。因为在一些重要的场景下不能在规定时间内解决问题的算法的是不可接受的

1.3.3 时间和空间资源开销

对于静态数据结构(一旦输入数据和问题规模确定下来,它的数据结构大小也就确定下来):一般将仅限于讨论时间开销。
在算法运行过程中,数据结构所占用的空间有时会有数量级的增大或缩小,对于这种情况,空间开销的分析和估计是十分必要的。

时间资源的折中原理:时空折中。指为了改善一个算法的时间开销,往往可以通过增大空间开销为代价。如:用散列函数,将问题时间复杂度由线性增长改善为常数时间,而空间开销方面则增添了一个线性增长的存储空间。在设计算法时,经常采用这种空间换时间的办法。当然也有牺牲计算机运行时间,通过增大时间开销来换取存储空间的节省的时间换空间的算法,如树的顺序存储。

上一篇下一篇

猜你喜欢

热点阅读