收到一封面对“算法”问题困惑的来信:
我是网络专业自然不回接触软件方向 ,但是 我对JAVA 感兴趣 , 我想做开发,开发当中用到的好像和算法(和那些数学相关的) 没有什么直接关系,都被包装好了...
我还需要 去学习一下 <算法导论>"这些吗?
回信如下:
1、很多都封装好了啊!还需要学习算法吗?
回答:是啊,如果开发一些简单的程序当然可以用包装好了的方法,但是,并不是所有你想干的事情都被人家包装好了啊。如果你只做面向数据库的“增删改查”,基本就不用研究算法了。
2、那“算法”这东西到底是什么?
回答:如果你自己做一个类似数据库的程序怎么办?有人会说,人家都做好了现成的MySQL、SQL-Server、Oracle等等数据库程序,我们直接使用就行了,还做它干什么?
我说:为什么我们就不能自己做一个数据库?
好,要不你自己做一个WebServer如何?
算了,这些都难,那你做一个简单的数组中的数据比对程序,***形成一个新数组如何?
你只知道,调用JDBC怎么完成这个开发任务?
我给一个定义:
算法其实就是用最简洁最快的方法,“折腾”数组或者其他数据,你的“算法”能力决定着你程序的运行效率。
所谓的“折腾”就是各种针对数组或者其他数据的运算过程,这个过程根据你的需要完成。
3、“算法”可怕吗?
回答:很多同学一听“算法”立马腿软,其实有那么可怕吗?一点不可怕,软件开发是门技术,但同时又是一门艺术,多练练就不怕了。
4、切莫为了“算法”而“算法”
很多同学为了练习“算法”,而特意去找一些“算法”的东西去练,练到***,还是云里雾里,到底什么时候用到“算法”呢?还是很晕,这就是“算法”和实际应用脱节的结果。
记住:任何程序都是有意义的,没有无意义的程序,不要为了“算法”而去“算法”,任何“算法”都是和实际应用相结合的。
5、回去试着做一道题:
试着做一个方法,传入两个数组和一条SQL语句,返回一个数组。
这个返回的数组时你SQL语句指定的返回条件返回的结果。
试试看,你能做出来这个程序,你的算法应该就没什么问题了。
注意:这个程序很实用,甚至可以理解为一个小型数据库的雏形程序呦!
【编辑推荐】