重学数据结构与算法
Posted xiangxiaolin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重学数据结构与算法相关的知识,希望对你有一定的参考价值。
复杂度是什么
复杂度是衡量代码运行效率的重要的度量因素。
计算机通过一个个程序去执行计算任务,也就是对输入数据进行加工处理,并最终得到结果的过程。每个程序都是由代码构成的。可见,编写代码的核心就是要完成计算。但对同一个计算任务,不同计算方法得到结果的过程复杂度是不一样的,这对你实际的任务处理效率就有了非常大的影响。
复杂度是一个关于输入数据量n的函数、计算方法遵循以下几个原则:
首先,复杂度与具体的常熟无关。如O(n)和O(2n)表示同样的复杂度。
其次,多项式级的复杂度相加的时候,选择高者作为结果。
其中,O(1)也是表示一个特殊复杂度,含义为某个任务通过有限可数的资源即可完成。此处有限可数的具体意义是,与输入数据量n无关。
时间复杂度与代码结构的关系
时间复杂度与代码有着非常紧密的关系;而空间复杂度与数据结构的设计有关。
降低复杂度的方法三步骤:
1.暴力解法。在没有任何时间、空间约束下,完成代码任务的开发。
2.无效操作处理。将代码中的无效计算、无效存储剔除,降低时间或空间复杂度。
3.时空转换。设计合理数据结构,完成时间复杂度向空间复杂度的转移。
首先,这段代码对数据进行了哪些操作?
其次,这些操作中,哪个操作最影响效率,对时间复杂度的损耗最大?
最后,哪种数据结构最能帮助你提高数据操作的使用效率?
数据处理的基本操作只有 3 个,分别是增、删、查。其中,增和删又可以细分为在数据结构中间的增和删,以及在数据结构最后的增和删。区别就在于原数据的位置是否发生改变。查找又可以细分为按照位置条件的查找和按照数据数值特征的查找。几乎所有的数据处理,都是这些基本操作的组合和叠加。
以上是关于重学数据结构与算法的主要内容,如果未能解决你的问题,请参考以下文章