01数据结构之基础知识总结

数据结构

数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科
程序设计=数据结构+算法

结构,简单的理解就是关系,比如分子结构,就是说组成分子的原子之间的排列方式。严格点说,结构是指各个组成部分相互搭配和排列的方式。在现实世界中,不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称为结构。那数据结构是什么?

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

按照视点的不同,我们把数据结构分为逻辑结构和物理结构。

逻辑结构

逻辑结构:是指数据对象中数据元素之间的相互关系。

集合:数据之间无关系
线性:一对一关系
树形:一对多关系
图形:多对多关系

物理结构

物理结构:是指数据的逻辑结构在计算机中的存储形式。

顺序存储
链式存储

算法

算法具有五个基本特性:输入、输出、有穷性、确定性和可行性。

输入:零个或多个输入
输出:至少一个或多个输出
有穷性:在执行有限的步骤后会结束,不会无限循环。执行时间也在合理范围内
确定性:算法的每一步都有具体含义,在一定条件下只有一条执行路径。
可行性:每一步都是可行的

好的算法,应该具有正确性、可读性、健壮性、高效率和低存储量的特征。

算法效率度量方法:

事后统计:统计所需时间
事前分析:估算

时间复杂度

执行次数 函数阶 非正式术语
12 O(1) 常数阶
2n+3 O(n) 线性阶
3n2 +2n+1 O(n2 ) 平方阶
5log2 n+20 O(logn) 对数阶
2n+3nlog2 n+19 O(nlogn) nlogn阶
6n3+2n2 +3n+4 O(n3 ) 立方阶
2n O(2n ) 指数阶

常用的时间复杂度所耗费的时间从小到大依次是:

O(1)

顺序存储与链式存储


01数据结构之基础知识总结_第1张图片
屏幕快照 2018-05-20 下午6.30.13.png

栈与队列


栈(stack)是限定仅在表尾进行插入和删除操作的线性表。
我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(LastIn First Out)的线性表,简称LIFO结构。
理解栈的定义需要注意:
首先它是一个线性表,也就是说,栈元素具有线性关系,即前驱后继关系。只不过它是一种特殊的线性表而已。定义中说是在线性表的表尾进行插入和删除操作,这里表尾是指栈顶,而不是栈底。

它的特殊之处就在于限制了这个线性表的插入和删除位置,它始终只在栈顶进行。这也就使得:栈底是固定的,最先进栈的只能在栈底。

队列
队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。

你可能感兴趣的:(01数据结构之基础知识总结)