数据结构与算法 (基础篇)


1 。什么是数据结构?

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。

2。常用的数据结构

数组,栈,队列,列表,数,图,堆,散列表,

图1

3。数据结构的分类

数据结构的分类简单的分成两类,线性结构和非线性结构。 

线性结构特点

简单地说,线性结构就是表中各个结点具有线性关系。如果从数据结构的语言来描述,线性结构应该包括如下几点: 

1、线性结构是非空集。 

2、线性结构有且仅有一个开始结点和一个终端结点。 

3、线性结构所有结点都最多只有一个直接前趋结点和一个直接后继结点。 

线性表就是典型的线性结构,还有栈、队列和串等都属于线性结构。

非线性结构特点:

简单地说,非线性结构就是表中各个结点之间具有多个对应关系。如果从数据结构的语言来描述,非线性结构应该包括如下几点

1、非线性结构是非空集。 

2、非线性结构的一个结点可能有多个直接前趋结点和多个直接后继结点。 

在实际应用中,数组、广义表、树结构和图结构等数据结构都属于非线性结构

总结:

线性结构简单的说就是一对一的关系,而非线性结构一对多,多对多。

分布图




图2

4。 数据结构 --基本数据关系如图3

图3

5。数据结构和算法关系图如图4

图5

6 什么是算法?

算法就是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每个指令表示一个或多个操作

算法特性:

输入输出,有穷性,确定性,可行性

算法设计要求:

正确性,可读性,健壮性,时间效率高和储存量低。

7 时间复杂度计算

大O表示法

1 用常数1取代运行时间中所有常数。如 3->1 O(1)

2 在修改运行次数函数中,只保留最高阶项。 如 n^3+2n^2+5 -> O(n^3)

3 如果在最高价存在且不等于1,则去除这个项目相乘的常数 如2n^3 -> n^3

。时间复杂度术语

常数阶, 线性阶 , 平方阶, 对数阶 ,立方阶,nlog阶 ,

指数阶(不考虑)O(2^n)或者O(n!) 除非是非常小的n,否则会造成噩梦般的时间消耗. 这是一种不切实际的算法时间复杂度. 一般不考虑!


常见时间复杂度

空间复杂度计算:

程序空间计算因素:

寄存本身的指令,常数,变量,输入,对数据进行操作的辅助空间

总结:在考量算法的空间复杂度,主要考虑算法执行时所需要的辅助空间.

你可能感兴趣的:(数据结构与算法 (基础篇))