数据结构-概述

一、概述

1、数据结构分类

逻辑结构

  • 集合结构
  • 线性结构
  • 树形结构
  • 图形结构

物理结构

逻辑结构真正在计算机中表达方式

  • 顺序存储结构:数组(数据存储单元内存地址是连续的)
  • 链式存储结构:引入指针存放数据元素的地址

2、算法

根据一定的条件,对一些数据进行计算,得出需要的结果。

优秀的算法追求的目标

  1. 花最少的时间完成需求
  2. 占用最少的内存空间完成需求

2.1算法分析

事前分析估算法

  1. 算法采用的策略和方案
  2. 编译产生的代码质量
  3. 问题输入估摸
  4. 机器执行指令的速度

2.1.1时间复杂度分析

分析算法的运行时间,最重要的就是把核心操作的次数和输入规模关联起来

2.1.1.1函数的渐进增长

随着输入规模(n)的增大,算法的常数操作可以忽略不计。

随着输入规模(n)的增大,与最高次项相乘的常数可以忽略。

最高次项的指数大的,随着n的增长,结果也会变得增长特别快。

算法函数中n最高次幂越小,算法的效率越高。

总结:

  1. 算法函数中的常数可以忽略。
  2. 算法函数中最高次幂的常数因子可以忽略
  3. 算法函数中最高次幂越小,算法的效率越高
2.1.1.2算法时间复杂度

大O记法规则使用

  • 用常数1取代运行时间中的所有加法常数
  • 在修改后的运行次数中,只保留高阶项
  • 如果最高阶项存在,且常数因子不为1,则去除与这个项相乘的常数

时间复杂度从低到高:O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)

2.1.1.3函数调用中的时间复杂度分析

每一段核心代码执行的都要计算,然后通过大O记法进行规整

2.1.1.4最坏情况

2.1.2空间复杂度分析

遵循大O记法,在java后端开发中,默认遵循时间复杂度分析

原文地址:https://www.cnblogs.com/sgrslimJ/p/13040082.html