本篇讲解算法相关
相关概念
算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。
主要对象是时间复杂度和空间复杂度
1、时间复杂度:
需要注意的是,时间复杂度比较的并不是时间,而是程序执行的次数。
时间复杂度常用
大O符号
表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况。
2、空间复杂度:
空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接
插入排序
的
时间复杂度
是O(n^2),空间复杂度是O(1) 。
总的分类:
非线性时间比较类排序:
交换排序:冒泡排序、快速排序
插入排序:简单插入排序、希尔排序
选择排序:简单选择排序、堆排序
归并排序:二路归并排序、多路归并排序
线性时间非比较类排序:
计数排序、桶排序、基数排序
具体的十大排序算法,这篇文章写的很完善,也有动画演示,我就不重复了:
https://www.cnblogs.com/onepixel/articles/7674659.html
需要注意:希尔排序与直接插入排序的差别,一开始也没搞明白,详解地址可以参考这里:
https://www.cnblogs.com/jsgnadsj/p/3458054.html