数据结构-算法(时间复杂度和空间复杂度)
2021-02-02 本文已影响0人
王清水
A,时间复杂度
1,算法效率的度量标准
单位时间内,随着输入规模的增大,算法增长率的大小; 【增长率考量】
而表示算法的复杂度,我们往往采取极限值,所以,测试时需要大量的数据进行测试;
2,算法时间复杂度表示法
大O表示法,将忽略常数项和乘数 ;这里比如最常见的高斯算法【(1+n)*n/2】,最后记作n^2/2+n/2,我们将忽略常数,然后保留最高项,则去除了2n,而线性阶n/2的乘法,也将被忽略,所以,这里它的时间复杂度为:O(n^2)
随着测试数据规模的增大,增长率越小,算法越优;
3,常见复杂度顺序
O(1) 常数阶 < O(logn) 对数阶< O(n) 线性阶< O(nlogn) nlogn阶< O(n^2) 平方阶< O(n^3) 立方阶< O(2^n) 指数阶 < O(n!) 阶乘 < O(n^n)
如果一个算法到了立方阶...理论上也不必再纠结它了
4,最坏运行时间和平均情况
实际算法运行情况是不可预计的,在算法理论中,最坏运行时间是一种保证,也是大O表示法所列举的,体现了算法的鲁棒性;而平均情况则侧重于程序运行时本身
B,空间复杂度
一般不会过度得设计空间,一般都是采用时间和空间之间的转换;这两者关系和能量守恒一样,不会存在一种优化了,另外一个没有损耗;
我们一般说的复杂度,都是指时间复杂度;