时间复杂度、空间复杂度、稳定性、数据结构基础概念

开启算法与数据结构学习之旅咯~


时间复杂度空间复杂度是算法的两大考量标准。稳定性也是算法的一个重要标准。

时间复杂度

       时间复杂度是对处理规模量为n的数据,执行算法所花的时间的度量。

注:站在宏观上(以大时间单位)来讲,程序在计算机上执行的速度是非常快的,各种算法的执行消耗时间几乎一样,
        所以比较消耗了的时间也就失去了意义,所以时间复杂度也可以理解是:处理规模量为n的数据,算法执行核
         心代码(即:算法中执行频度最高的代码)的次数

(常见的)时间复杂度数量级

  • 常量阶:表明执行该算法所消耗的时间与数据规模量n无关。

  • 线性阶:表明执行该算法所消耗的时间与数据规模量n成正比,是一种线性关系。

  • 平方阶:表明执行该算法所消耗的时间是数据规模量n的平方。如:假设某算法处理数据规模量为n的数据时,消耗的时间为t;那么当数据规模量为2n时,需要花费的时间就为4t;那么当数据规模量为4n时,需要花费的时间就为16t。

  • 立方阶:表明执行该算法所消耗的时间是数据规模量n的平方。
    注:立方阶类比平方阶进行理解即可。

  • 对数阶:表明执行该算法所消耗的时间与数据规模量n是一种对数关系。

  • 其它的还有如:等等阶。

时间复杂度数量级函数图

空间复杂度

       空间复杂度是算法在计算机内执行时对所需存储空间(一般指内存)的度量,它也是数据规模量n的函数。

稳定性

       在排序中对于相等的两个元素a,b。如果排序前a在b的前边,排序之后a也总是在b的前边。他们的位置不会因为排序而改变称之为稳定。反之,如果排序后a,b的位置可能会发生改变,那么就称之为不稳定。

常见算法的时间复杂度、空间复杂度、稳定性的对比图

声明此图片摘取自Xiongfanrong的博客,若有不当请即时联系本人。


数据结构基础概念

数据所有能被输入到计算机中,且被计算机处理的符号的集合。

数据元素是数据的基本单元,由若干个数据项组成,也称为节点。

数据项是数据不可分割的最小单元,有时也称为域或者字段。

数据对象是指相同性质的数据元素的集合。

数据结构互相之间存在一种或多种关系的数据元素的集合。数据元素之间的关系称为结构。

四种基本的数据结构(的模型结构)

  • 集合:数据元素之间同属一个集合。

  • 线性结构一个对一个,一对一关系。

  • 树形结构(层次结构)一个对多个的关系。

  • 图状结构(层次结构)多个对多个的关系。

  • 注:也有说法认为是三种数据结构(集合不算在内)。

数据结构的存储结构

  • 连续存储结构

  • 不连续存储结构

注:存储结构指的是物理结构,针对的是计算机的内存。

注:硬盘是文件结构。

声明:本文是学习笔记,主要学习自以下视频

^_^ 如有不当之处,欢迎指正

^_^ 参考链接
               
Xiongfanrong的博客

^_^ 学习视频
           《数据结构和算法(Java版)》,张晨光

^_^ 本文已经被收录进《程序员成长笔记(五)》,笔者JustryDeng

猜你喜欢

转载自blog.csdn.net/justry_deng/article/details/89484543