重学数据结构与方法(待更新)

模块一:方法论

01. 复杂度:如何衡量程序运行的效率?
复杂度细分为时间复杂度和空间复杂度,其中,时间复杂度与代码的结构设计高度相关;空间复杂度与代码中数据结构的选择高度相关。

02.数据结构:将昂贵的时间复杂度转换为廉价的空间复杂度
代码效率优化的最终目标:采用尽可能低的时间复杂度和空间复杂度,去完成一段代码的开发。
空间是廉价的,时间是昂贵的。
常用的降低时间复杂度的方法:递归、二分法、排序、动态规划
降低空间复杂度的方法:更改数据结构,采用低复杂度的数据结构解决问题

降低复杂度的三个步骤:
第一步:暴力解法
第二步:无效操作处理:掌握递归,二分法,排序,动态规划
第三步:时空转换:需要对数据的操作进行细分,全面掌握常见的数据结构,再围绕问题,有针对性的设计数据结构,采用合理的算法思维,不断完成时空转移,降低时间复杂度。

模块二:数据结构基础

03.增删查:掌握数据处理的基本操作,以不变应万变
要灵活使用数据结构,需要先弄清楚数据在代码中被处理,加工的最小单位动作,也就是数据结构的基本操作,有了这些动作之后,你就可以基于此选择更合适的数据结构了。

要设计合理的数据结构,从问题本身出发,思考顺序:
首先,我们分析这段代码到底对数据先后进行了哪些操作
然后,再根据分析出来的数据操作,找到合理的数据结构。

一些操作的理解:

  • 找到要处理的数据(查找)
  • 把结果存到一个新的内存空间中(增)
    把结果存到一个已使用的内存空间中(先删除内存空间中已有的数据,再新增新的数据)

我们发现,即便是很复杂的代码,他对数据的处理也只有这3个基本操作:增,删,查。

只要围绕这3个数据处理的操作进行分析,就能得出解决问题的最优方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章