none
请问该如何学习算法? RRS feed

  • 问题

  • 小弟我是一名二本的信息学科的本科生,目前正在自己深化算法的学习。由于自己和学校方面的原因,我的算法学得很是糟糕,并且自己在闭门造车的工程中又很是困惑,于是想请教一下各位长者、得道者这方面的经验以解个人之惑。

    我认为算法在application上主要有以下三个方面的Track:算法设计、算法实现以及算法分析。其中,算法设计以及算法评价是与语言特性所无关的纯应用数学过程,而算法实现则是依赖于对使用语言和平台的特性的了解。

    我的算法学习就是拿中学时参加信息学比赛时的书和老师给的九章算术来用Visual Basic 9(我也很惊奇为什么曾经是C党的我居然会喜欢上用这个东东了)写本地程序。在写的过程中,就拿我最近一直在琢磨的全排列的问题为例,我总是在算法设计的过程中难以和过去学过的算法联系起来,以至于我在设计那个全排列的算法时,我先是自己想方法写出“1-5”的全排列,然后再找不知情的同学,要求他们在不复查的前提下,试一下写“1-5”的全排列,最后我跟据我观察到的来确认这个是一个遍历解空间树的过程。接着在尝试写的时候,我就更郁闷了,VB9除了那个需要在程序集空间托管空间中装箱拆箱装箱拆箱的ByRef外我就不知道有什么类似指针的东西了,于是我只好放弃直接定位对象的方法,再次探寻别的算法了。然后当我好不容易想到了用队列+迭递来完成的时候,我发现我除了使用“运行前Dim startTime As Date = Now一下,运行后Dim endTime As Date = Now一下,最后lblRunTime.Text = CString(DateDiff("s", startTime, endTime))”之外就不会检验算法了,这个对我这种语言功能不熟练的人来说那可是灾难哪——无法排除编程技巧不足的干扰啊——高数得学到什么程度才能胜任分析工作呢?

    万望指教,先谢过了。


    人の歩みを止めるものは絶望ではなく、諦観。 人の歩みを進めるのは希望ではなく、意志。 ——天神爛漫 LUCKY OR UNLUCKY?!
    2010年4月6日 9:24

全部回复

  • 沉下去了……没人理我啊,请问是我这个帖子发错了地方呢还是帖子内容有不妥当之处呢?希望路过走过的各位能不吝指出。
    人の歩みを止めるものは絶望ではなく、諦観。 人の歩みを進めるのは希望ではなく、意志。 ——天神爛漫 LUCKY OR UNLUCKY?!
    2010年4月8日 23:47
  • 算法,学懂固然好,如果是做应用,学不通也可以,因为你不一定要专门做这个,就看以后对自己的定位了。

    山西.net俱乐部
    2010年4月17日 15:25
    版主
  • 《Introduction to Algorithms》
    2010年4月21日 17:45
  • 我也对这个问题很疑惑,毕竟现在做web开发,除了排序用过二叉树之后就没用过什么算法了....虽然知道算法是灵魂,但是能用灵魂的次数确实不多,就算不会都可以搜一大把
    2010年4月25日 4:37
  • 如果有兴趣,又没有生活的压力,就多学学吧,不用过于苛求
    2010年4月28日 13:14