算法

来源:互联网 发布:方正字库 mac 编辑:程序博客网 时间:2024/04/30 11:23

    算法不是程序,有个经典的公式:程序=算法+数据结构。
    这里的程序又并不是指具体哪一种语言编写的程序,而是通用的程序思想。比方说,你想要个人甲跟着你,用中文可以说“跟我来”,英文可以说“Follow me”,但是表达的意思都是相同的,希望甲有跟随你的行动。这里的“跟我来”或者“Follow me”你可以看作具体语言比如C++、java、VB编写的具体程序,而甲可当作是计算机,你心里的想让甲跟随你的想法就是开头公式里的“程序”,算法和数据结构都是这种“程序”(实际上是编程思想)的组成部分。
    数据结构可以由任何编程语言来实现,算法也是这样。只是很多语言都有局限性,不能实现或只能用一种方法实现很多通用的数据结构。而c\c++能够实现绝大部分数据结构,所以数据结构和算法书中用这2种语言作例子的很多,但并不是说其他语言中没有数据结构。
    数据结构对于大多数人来说都是难学的,因为它是建立在完全的数学理论基础上的,在真正编写解决实际问题的程序以前,很难明白这么一套东西到底是干嘛的。但是如果一点都不明白数据结构算法,面对问题,又根本不知道怎么编程序解决。这是很矛盾的,没有办法。我以前学数据结构时,很多东西都是强行记忆的,不明白堆栈有什么用,干嘛要用指针构造个链表,数组用起来不是很方便吗?灵活的插入、删除有那么重要吗?脑海里有很多类似的疑问。直到后来真需要为别人编写程序了,要解决实际问题了,才猛然明白这些东西的意义。
    因为约束,现实中有太多约束了。对于程序员来说,经常受到的约束是内存空间和运行时间。面对未知的数据量,是定义个超大的数组,逼得机器去用虚拟内存,还是用指针去做个动态的链表?答案在现实面前是显而易见的。数据结构和算法都是从解决实际问题的方法中提取出来的。
    我不知道你们的数学开到哪一门了,不过我想在学算法之前,先把数学基础打好更重要点。重要的是能够理解数学的思想方法,不一定要的高分。如果这一步能做到了,就有很可能学好数据结构。我也不知道通用的方法,只能说说自己的经验,我之前就知道这门课难学,也知道这门课重要。所以上这门课极老实,既不敢逃课也不敢上课睡觉,专心听讲,逮着老师问,下课看书,把代码敲到电脑里试,敲进去运行了还不明白的就抄在本子上强背,反正无所不用其极。其他很多课我就去过几次,这门课难得全勤。不过那时只能说吞下去了,很多没消化,后来在编写程序的过程中不断的领会,直到今天都不能说自己真正知道各种常用算法在什么时候怎么用最合理。
    反正个人感觉把计算机类的课程当数学学,对于大部分理科好的人,混个好看的分数一点问题没有,可是想能真正的学会编程序,就不能只是象学数学一样看书做题。而是要去自己编写、调试代码,可能调试比编写更重要。我对数据结构和算法的很多领悟都是在痛苦的调试中领悟的,不过调通了以后确实很高兴。
    很多人报考计算机的时候,都不知道编程是怎么回事。我不知道楼主是否这样,如果是,我先告诉你,这一行很奇怪的,对于喜欢编程序的人,觉得很有意思,虽然也有很多压力;可是不喜欢的人会觉得好像地狱一样。要好好考虑一下,如果觉得在电脑前面每天坐几个小时调一些奇怪的英文字母是件很难受的事,就真的要考虑是不是要换个专业了。
    因为看了这个贴子,想到了以前学数据结构的日子,说了好多话,都不知道跑题没。不过总算是本科时的经验吧。
0 0
原创粉丝点击