算法设计问题

算法设计问题

老师,后面课程中会讲解如何设计算法吗?

比如说在工作中遇到到某个复杂的场景,怎么去设计算法,可能会同时用到多种算法的组合,像这种情况有什么套路吗?我应该选择哪些合适的算法去解决问题?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

抱歉,这个课程不涉及传统意义上的“算法设计”的内容。这个课程主要学习经典算法的算法和数据结构。


通常说“算法设计”,在传统的计算机科学的领域分类上,是指学习诸如“贪心”,“动态规划”,“回溯”,“分支限界”,等等算法思想的使用。这些内容不在这个课程的范围里。但是,学习这个课程是进一步学习这些算法思想的基础。



但是,根据我的经验:


1)


大多数软件工程师在实际工作中,不需要非常复杂的这类算法设计思想的学习。最典型的就是“动态规划”。很多同学因为面试的需要,对学习动态规划有需求,但实际上,在工作中 99% 的同学基本上不会使用动态规划。更一般的算法思想,比如回溯,确实会更常用一些,对于这些基本的“思想”,学习这个课程是有帮助的。因为这个课程中虽然没有“显式”地去讲“回溯”,但是近乎所有的递归算法,本质都是在“回溯”,而这个课程涉及大量的递归算法。


但不管怎么样,我还是要强调,这个课程中涉及的内容,是进一步学习算法设计的基础。学习经典的算法和数据结构,很多时候更多地就是去体会其背后的算法设计思想(我们学习那么多排序做什么?真要排序,调一个 sort 就好。就是因为不同的排序算法背后,有着不同的算法思想。)我在这个课程中,是会不断地提炼,强调,总结这些地方。


2)


根据我的经验,大多数软件工程师在实际工作中,遇到的最常见的算法问题,其实是数据结构类问题,即数据如何组织的问题,或者说至少这是解决问题的第一步。对于这类问题,学习这个课程是有帮助的。你可以参考一下这个课程的目录,其中涉及的数据结构,是不是你熟悉的。整体,如果你觉得课程目录中的内容,有很多你觉得自己理解的不够深刻,或者没有具体实践过的话,那么这个课程值得你学习。



3)


另外一些同学遇到算法问题,其实是专有领域内的算法问题。比如如果你工作在分布式系统上,可能需要使用一致性哈希算法;或者你工作在数据存储领域,会使用 LSM 树(数据存储最基本的 B 树,这个课程有涉及,但不是重点);或者你需要经常写自定义规则的解析器(如实现类似 SQL 语言,或者正则表达式,或者 HTML 的解析器),这些实际上是编译原理的范畴,等等等等。这些内容这个课程都不涉及,应该进一步去学习这些具体领域。


但是依然是,所有这些更进一步计算机领域的学习,所需要的算法和数据结构基础,都在这个课程中涵盖了。在这个课程中后续近乎每一章的最后,我也都会对这一章的内容做一个简单的拓展,告诉大家这一章的内容在很多计算机科学的具体领域中,可以被怎样应用。


==========


请你根据这些,再审视一下这门课程的目录,看看这门课程是否是你现在要学习的内容。如果发现不是的话,请迅速联系慕课网的客服做退课处理。


继续加油!:)


  • lieh1203 提问者 #1

    老师,我看到你另外的一个“计算机基础”课程,里面的"算法和数据结构"章节是不是和我们这个课程的内容是一样的?如果是一样的内容,我想退了这个课,直接学“计算机基础”,我不是计算机专业的,想补补基础。


    2022-10-06 19:26:05
  • liuyubobobo 回复 提问者 lieh1203 #2

    是一样的。但我只负责算法和数据结构部分的答疑。其他部分有相应的其他老师负责。请迅速和慕课网的客服联系做退课。继续加油!:)

    2022-10-06 19:31:42
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2589    人
  • 解答问题       1090    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师