数据结构与算法关系及其分析
简单关系
算法描述一种有限、确定、有效的并适用于计算机程序来解决问题的方法。大多数的算法都需要适当的组织数据,而为了组织数据就产生了数据结构。所以说实现一个良好的算法,不仅需要良好的思想还需要对应良好的数据结构。
时间复杂度和空间复杂度
具体的推倒过程真的没有必要去理解,我们只要可以通过感性的去理解,当算法输入数据量巨大的时候,可以通过一个简单的表达式表示算法的效率即可,毕竟我只是使用算法,而不去创造这些经典的算法问题。
时间复杂度:简单理解就是描述一个算法在问题规模不断增大时对应的时间(表达式次数)增长曲线并记作O(f(n)),并且f(n)里面通过忽略低阶和常数因子。增长曲线(增长数量级)并不是一个准确的性能评价,只是可以理解为一个近似值,时间的增长近似于logN、NlogN的曲线,简单记作O( f(n) )。一个复杂度可以近似表示为一个表达式运算的时间。O(n)意思相当于就是当变量为n的时候,算法需要执行表达式的的量级。O表示近似,可以看作函数理解。例如要找到一个数组里面最大的一个数,你要把n个变量都扫描一遍,操作次数为n,那么算法复杂度是O(n)。