时间复杂度、空间复杂度、稳定性、数据结构基础概念
开启算法与数据结构学习之旅咯~
时间复杂度与空间复杂度是算法的两大考量标准。稳定性也是算法的一个重要标准。
时间复杂度:
时间复杂度是对处理规模量为n的数据,执行算法所花的时间的度量。
注:站在宏观上(以大时间单位)来讲,程序在计算机上执行的速度是非常快的,各种算法的执行消耗时间几乎一样,
所以比较消耗了的时间也就失去了意义,所以时间复杂度也可以理解是:处理规模量为n的数据,算法执行核
心代码(即:算法中执行频度最高的代码)的次数。
(常见的)时间复杂度数量级:
-
常量阶
:表明执行该算法所消耗的时间与数据规模量n无关。
-
线性阶
:表明执行该算法所消耗的时间与数据规模量n成正比,是一种线性关系。
-
平方阶
:表明执行该算法所消耗的时间是数据规模量n的平方。如:假设某算法处理数据规模量为n的数据时,消耗的时间为t;那么当数据规模量为2n时,需要花费的时间就为4t;那么当数据规模量为4n时,需要花费的时间就为16t。
-
立方阶
:表明执行该算法所消耗的时间是数据规模量n的平方。
注:立方阶类比平方阶进行理解即可。 -
对数阶
:表明执行该算法所消耗的时间与数据规模量n是一种对数关系。
-
其它的还有如:
、
等等阶。
时间复杂度数量级函数图:
空间复杂度:
空间复杂度是算法在计算机内执行时对所需存储空间(一般指内存)的度量,它也是数据规模量n的函数。
稳定性:
在排序中对于相等的两个元素a,b。如果排序前a在b的前边,排序之后a也总是在b的前边。他们的位置不会因为排序而改变称之为稳定。反之,如果排序后a,b的位置可能会发生改变,那么就称之为不稳定。
常见排序算法(时间、空间)复杂度、稳定性对比:
声明:下图截取自博客https://blog.****.net/yushiyi6453/article/details/76407640,若涉及版权问题,请及时联系本人。
数据结构基础概念:
数据:所有能被输入到计算机中,且被计算机处理的符号的集合。
数据元素:是数据的基本单元,由若干个数据项组成,也称为节点。
数据项:是数据不可分割的最小单元,有时也称为域或者字段。
数据对象:是指相同性质的数据元素的集合。
数据结构:互相之间存在一种或多种关系的数据元素的集合。数据元素之间的关系称为结构。
四种基本的数据结构(的模型结构):
-
集合:数据元素之间同属一个集合。
-
线性结构:一个对一个,一对一关系。
-
树形结构(层次结构):一个对多个的关系。
-
图状结构(层次结构):多个对多个的关系。
-
注:也有说法认为是三种数据结构(集合不算在内)。
数据结构的存储结构:
-
连续存储结构:
-
不连续存储结构:
注:存储结构指的是物理结构,针对的是计算机的内存。
注:硬盘是文件结构。
声明:本文是学习笔记,主要学习自以下视频