首先写本文之前,我先抛出一个问题,什么是算法?用官方的话说就是
是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制
我自己的理解就是生活中的实际问题,转化成数学问题去解决,将实际的抽象性问题转换成数理性的问题去解决。算法的五大特征是,有穷性,可行性,确切性,输入,输出。凡是任何一个算法都必须满足这5个基本特征,只要是数学问题,不存在模棱两可的事情。哪怕是概率问题在数学里专门有一门课程叫“概率论”与之对应,能将这些不确定问题进行数学化。
因此计算机编程的人都有一些数学基础才行,这里举几个常见的计算机编程算法,比如快速排序,归并排序,递归,穷举,贪心算法,汉诺塔算法,八皇后算法等等,这些算法有的需要数学理论,有的可能不太需要数学理论,但是有一点可以肯定的,比需要有智商才可以搞定的东西。
好了,关于算法我就谈到这些,相信大家对算法已经有一定的概念了,大家在认识上也统一一下,达成一个共识,说了这么多,我是为了表述一下我下面的2个观点。
如果有对java感兴趣java程序员,可来我们的java技术学习群的哦69122,
2579里面免费送java的零基础教程噢!
学历高不一定算法强
算法首先需要有数学理论去做辅助才行,在工作中我有这样一个同事他是数学系毕业的,但是他的算法我看也是一般般的,他的数学理论是很棒的,如微积分,傅立叶变换,德布罗意方程组,薛定谔方程,欧拉公式,麦克斯韦方程组等等,他都是非常了解熟悉的,但是解决实际算法问题他还不如一个专科毕业的一个程序员强呢,这是为什么,数学理论不等同于算法,我个人理解为这样一个公式 数学理论加持 + 逻辑设计组织 + 智商 = 算法能力。也就是数学理论强只能说对算法是有一定帮助的,但是数学理论强并不代表算法能力强,不完全等同的。
我下面再举一个反面例子,这个倒是很典型,也是一个真实的案例,在20多年前的时候,当时上大学就是很了不起的,我们村里出了一个大学生,这个大学生的数学也是一级的棒,有一次,市领导来探望他,并且还想让他帮一个忙,市领导拿出了一张河南地图,地图上标有比例尺,让他算一下河南的土地面积有多大,结果这个大学生花了4个小时愣是没算出来,用各种公式计算,特别复杂,大家都是知道的,这个地图不是标准的长方形,正方形,那曲曲折折的拐弯拐的晕头转向你怎么能算出面积呀。真把这个大学生累的不行了,但是最后这个大学生的爸爸把这个问题算出来了,牛啊,他爸用的什么算法啊,他爸用的算法的确挺牛,别急,在说他用的算法之前,我先隆重的介绍一下他的爸爸,他的爸爸是当地一个地地道道的农民,小学文化水平,好多字认识不全。
他爸的做法是,找了一个质量均匀的50cmX50cm的正方形塑料板,称量一下这个正方形塑料板的重量,然后对着地图把把这个塑料板按照地图的形状给画下来,然后再称一下地图形状的塑料板的重量,根据重量比,以及地图的比例尺轻松算出土地面积。说到这里是不是应该为这位爸爸鼓掌呀,说明他的算法能力也是很强的啊,起码能说明他的智商也是很高的,只不过没受过良好的高等教育罢了,要是他会高等数学,再加上会计算机编程的话,他一定是个牛人了。
算法不单单来源于知识,也需要经验加持
我一直认为算法是来源于生活和人的大脑的一种产物,人们生活中遇到的问题,通过一定的数学机理在加上人的大脑的组织规划就形成了算法,算法是很严密的一个东西,需要考虑到边边角角,要求对某一个步聚进行数字化,算法强需要有强大的知识体系做支撑,但是也需要有一定的生活经验加持才行,毕竟算法就是用于解决生活中的问题嘛,如果过于研究理论,没有一点生活经验也会闹出笑话了,我就以这样一个段子为例来说明,相信这个笑话大多数人都听过,就是一个家庭主妇被误加到一个博士们的聊天群,群里突然一人问道一滴水高空自由落体运动能不能把人砸死?问题一出,群里异常活跃,速度,加速度的各种公式计算,讨论了将近一个小时没结果,结果家庭主妇在群里问了一句难道大家都没有淋过雨么?顿时群里安静,呵呵。
算法其实就是用数学知识去解决生活中的实际问题,他是需要人类大脑的智慧将数学的知识巧妙的组合利用起来才能去解决生活中的实际问题,如果只是有一堆数学理论知识不会合理的运用那也是不行的,只能说有数学理论基础的算法方面会更有优势一些,但是不代表他们的算法会更强。
你有没有好奇过:计算机为什么能够进行计算?计算机程序是怎样运行的?你是否想知道:计算机未来可能的发展趋势有哪些?程序是如何编写出来的?如何学习程序设计语言?程序设计语言的基本成分有哪些?《计算导论》这门课将帮助你解决这些疑惑。学完这门课,你将能够解释计算机和程序的基本运行原理以及它们的特性,向你的朋友讲述计算机的历史和发展趋势;同时,你也将充分“热身”,迎接“计算机程序设计语言”的学习!
领取专属 10元无门槛券
私享最新 技术干货