算法概述


本篇文章是数据结构与算法概述,旨在归纳一些比较重要的概念、思想和方法,以为刷题做准备。因为是个人经验的总结,所以会不定时更新。

一、线性结构和非线性结构

  • 线性结构:数据元素之间存在一对一的线性关系
  • 线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。
  • 顺序表中的存储元素是连续的;链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息
  • 线性结构常见的有:数组、队列、链表和栈。
  • 非线性结构包括:二维数组,多维数组,广义表,树结构,图结构

二、时间复杂度

1、什么是时间复杂度

  • 算法的执行效率
  • 算法的执行时间与算法的输入值之间的关系

2、常见的时间复杂度

  • O(1):没有循环
  • O(logN):while循环(二分查找)
  • O(N):for循环
  • O(M+N):两个for循环并列
  • O(M* logN):for循环里面有while循环(排序)
  • O(N^2):嵌套for循环

三、空间复杂度

1、什么是空间复杂度?

  • 算法的存储空间与输入值之间的关系(找变量)

  • 如果变量 = 常量,就是O(1)

  • 如果变量的存储涉及到Array、List、Map、Queue、Stack,空间就会随着nums的改变而改变

2、常见的空间复杂度

  • O(1)
  • O(N)

文章作者: Prannt
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Prannt !
评论
  目录