总结课 | 在实际开发中,如何权衡选择使用哪种数据结构和算法?
王争
该思维导图由 AI 生成,仅供参考
你好,我是王争,今天是一篇总结课。我们学了这么多数据结构和算法,在实际开发中,究竟该如何权衡选择使用哪种数据结构和算法呢?今天我们就来聊一聊这个问题,希望能帮你把学习带回实践中。
我一直强调,学习数据结构和算法,不要停留在学院派的思维中,只把算法当作应付面试、考试或者竞赛的花拳绣腿。作为软件开发工程师,我们要把数据结构和算法,应用到软件开发中,解决实际的开发问题。
不过,要想在实际的开发中,灵活、恰到好处地应用数据结构和算法,需要非常深厚的实战经验积累。尽管我在课程中,一直都结合实际的开发场景来讲解,希望带你真枪实弹地演练算法如何解决实际的问题。但是,在今后的软件开发中,你要面对的问题远比我讲的场景要复杂、多变、不确定。
要想游刃有余地解决今后你要面对的问题,光是熟知每种数据结构和算法的功能、特点、时间空间复杂度,还是不够的。毕竟工程上的问题不是算法题。算法题的背景、条件、限制都非常明确,我们只需要在规定的输入、输出下,找最优解就可以了。
而工程上的问题往往都比较开放,在选择数据结构和算法的时候,我们往往需要综合各种因素,比如编码难度、维护成本、数据特征、数据规模等,最终选择一个工程的最合适解,而非理论上的最优解。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
在实际软件开发中,灵活应用数据结构和算法需要综合考虑多种因素,而非简单地追求理论上的最优解。本文总结了六条经验,帮助读者更好地权衡选择使用哪种数据结构和算法。首先,时间、空间复杂度不能简单等同于性能,因为复杂度并不是执行时间和内存消耗的确切数据量。其次,抛开数据规模,数据结构和算法在小数据规模下的性能差距很小,因此在这种情况下,选择简单、容易维护、容易实现的方式即可。结合数据特征和访问方式来选择数据结构是关键,需要理清要处理数据的特征与访问方式,才能找到满足需求的算法。需要区别对待IO密集、内存密集和计算密集,合理选择数据存储格式和存取方式,减少性能瓶颈。文章还提到了善用语言提供的类,避免重复造轮子,以及千万不要漫无目的地过度优化的观点。总的来说,本文强调了在实际软件开发中,灵活应用数据结构和算法需要综合考虑多种因素,而非简单地追求理论上的最优解。这些经验可以帮助读者更好地理解如何在实际开发中选择合适的数据结构和算法,解决实际的开发问题。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《数据结构与算法之美》,新⼈⾸单¥68
《数据结构与算法之美》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(36)
- 最新
- 精选
- 安然自若代码在哪里🧐
作者回复: https://github.com/wangzheng0822/algo
2019-07-09 - 观弈道人课程要结束了,可惜拉下好多内容。2019-02-1830
- 猫头鹰爱拿铁已经开始二刷了。二刷完后打算再做一遍习题吧。 关于选择数据结构这块,我觉得确实要好好研究下底层的数据结构实现。这个对自己的成长也是有好处的。例如看完hashmap的源码会对巧妙使用位运算提升性能有更深层次的体会。然后就是工程中还要考虑实际场景,例如并发等等,如果不研究深一点数据结构,哪怕对应到散列表,jdk有hashtable,hashmap,concurrentmap选啥呢。2019-02-18419
- 牧民牛仔老师的课程设计的很合理,对应的数据结构及算法章节,随时可查,随时可以复习。点个赞2019-02-1817
- 李伟在平时工作上,看到有些前人留下来的代码,看起来效率不是很高,但是却没有人去优化它,应该就是属于老师今天说的这种情况!2019-02-18216
- 传说中的成大大这篇文章让我想起了以前看书学习设计模式中德一个忠告,滥用设计模式比不用设计模式更糟糕!2019-02-1811
- 王子瑞Aliloke有事电联学习好基础的知识,力求能开发出ES,Kafka,MQ 这一类的优秀开源工具。 一刷还没完成,但数据结构与算法,我一定会精通的,计划花200+小时的认真学习,精通数据结构与算法2019-02-20710
- 纯洁的憎恶1.目标不同,评价标准不同。 2.根据环境特征选择解决方法。 3.将复杂、开放的问题,合理抽象为特定范式。 4.善于找到问题的瓶颈,并优先解决。 5.善于借助前人的经验,并尽可能理解他们的经历与选择。 6.注意成本收益,投入恰到好处,切忌严重过度投入。2019-02-188
- 未来的胡先森这门专栏要不断的回过头去复习巩固,关键还是要不断的 coding 练习2019-02-186
- 呦呦鹿鸣是的,用最小的成本满足需求,这或许就是终极原则了。做设计时应该要有取舍,权衡各方面的优劣,切勿过度设计2019-02-184
收起评论