注:以下内容仅为自己学习时所做笔记
什么是算法?
- 算法是一系列程序指令,用于处理待定的运算和逻辑问题。
衡量一个算法的优劣的标准是时间复杂度和空间复杂度。
一、数据结构
数据结构是算法的基石。
数据结构是数据的组织、管理和存储结构,目的是为了高效地访问和修改数据。
1.主要组成方式
- 线性结构
线性结构是最简单的数据结构,包括数组、链表,以及由它们衍生出来的栈、队列、哈希表。 - 数
数是相对复杂的数据结构,其中比较有代表性的是二叉树,由它又衍生出了二叉堆之类的数据结构。 - 图
图是更加复杂的数据结构,因为在图中会呈现出多对多的关联关系。 - 其他数据结构
除了以上常见的的基本数据结构外,还有很多数据结构,基本都是由基本数据结构演变而来,如哈希链表、位图、跳表等。
二、初识时间复杂度
1.概念
渐进时间复杂度 : 如存在函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称为f(n)是T(n)的同数量级函数。记做 T(n)= O(f(n)),称为O(f(n)),O为算法的渐进时间复杂度,简称时间复杂度。(大O表示法)
时间复杂度就是把程序的相对执行时间函数T(n)简化为一个数量级,这个数量级可以是n,n2,n3等
2.原则
- 如果运行时间是常数量级,则用常数1来表示
- 只保留时间函数中的最高阶项
- 如果最高阶项存在,则省去最高阶项前面的系数
三、初识空间复杂度
中间数据Map<key,value>
散列表
在时间复杂度相同的情况下,算法占用的内存空间越小越好。
1.概念
空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度,使用了大O表示法 S(n)=O(f(n)),n为问题的规模,f(n)为算法所占存储空间的函数。
2.分类
- 常量空间
- 线性空间
- 二维空间
- 递归空间
递归算法的空间复杂度和递归深度成正比
四、总结
时间复杂度时执行算法的时间成本,空间复杂度时执行算法的空间成本