谈下程序设计算法的准备心得与体会-nCov隔离也许帮你提升能力
最近武汉的n-Cov使得大家只能在家办公了。
在家里的感受是什么样的呢?
1.上班的时候一直在奔跑,现在总算可以有集中的时间来思考一些之前一直没能好好整理的内容
2.时间变得自己可以掌控,优先级有自己掌控,暂时这一两个星期不需要为钱而奔波,感觉每天其实过得很充实
首先声明我不是什么算法高手,身边有很多算法高手太厉害了,我仅是一名考虑如何将孩子们能领入计算机正确之门的教育工作者。
最近因为要给一些孩子(5年级到初中)讲下基础算法,而且孩子肯定是需要深入浅出的,这样其实对老师是个很高的要求。
为了不给孩子带错路,不让孩子们觉得算法很难产生抵触情绪,本人最近在阅读大量的资料和上各个大学的公开课。通过大量阅读资料和视频学习,发现当老师真是一个教学相长的过程。
读大学那会儿学习都没这么认真过:)
1.目标与出发点
主要从以下几个方面:
1.如何用简单形象化的例子来讲述一个算法,最好是生活中的列子
2.找一些能用简单代码来体会算法的例子
3.如何归纳出,看到题目,大概能反应出题目考的是哪个算法
4.使用这些算法解题要注意的关键点
2.参考书籍
下面是参考的一些书籍,书籍真的是世界上最好的东西,作者一般都是在书中尽量倾其所有。但是书籍的作者一般会写作专注于某一个或多个方面,和一部分特定人群,所以需要博览群书来提取符合自己的内容。
下面是我参考的一些书籍,感觉角度和内容还是比较丰富。
书中有几段文字,还是挺有意思的,我也截图了一下:
-- “从本质上说,算法只是做事的方法,因此一个不怎么会写程序的数学家也可是算法领域的顶尖高手”
-- “以对一个无序数列进行从小到大排序的问题为例,小学生都能想出的‘插入排序’算法,大多数人打牌摸牌的同时,让手上的同色花牌保持有序,就是用的这种方法”
其实我们生活当中,不自然的在应用一些非常好的算法。
--“算法可以说是程序的灵魂。算法水平额高低很大程度上决定了程序员的层次。”
--“没有算法工地的程序员俗称为码农,大多只能从事技术含量低、机械的编程工作。一般IT培训机构不教算法,培养的就是此类人员。”
3.成果与感受
通过前期零散的总结和,这一周的集中攻克,终于折腾出了下面10多份,自己还比较满意的教案
下面这个网站给我帮助很大,分享你们
https://www.geeksforgeeks.org/
在线视频我觉得比较好的
https://www.icourse163.org/
算法研究学习的一些心得体会,也许很多人觉得浅显,不过自己感觉还是很有满足感的,所以写一下:
1.基础程序设计是for,while循环,加上判断语句
2.程序设计水平的提升,在于你能熟练使用递归,掌握了递归你能控制计算机程序就进入了另外一个阶段
3.大的问题,看起来很复杂,那么我们只能使用分而治之的手法,将大问题分解成为小问题,通过解决小问题来完成大问题的解
4.有些问题,穷举所有情况是NP完全问题,那么计算近似解又快又简单,比方贪心算法
5.计算机擅长的是什么?按照一个式子重复性的工作,那么如果一个问题我们能推导出一个递推式,并且能给出终止条件(也就是问题被分解到足够小,并能求解时的条件),剩下的就交给计算机来完成吧
6.程序的调用栈这个东西很有意思,先搁置一连串待解决的问题,等栈顶这个问题解决了,一连串问题,像多米诺骨牌一样,全部解决:)
7.当然请大概估算一下时间复杂度和空间复杂度,牺牲时间换空间?牺牲空间换时间?存储已计算过的值来避免重复计算
8.当然还有一眼看不出,想不到全局最优解时,可以考虑局部最优解,或许局部最优解能推出整体最优解,呀,好像还要用数学归纳法证明(高中最后一题,一般是不是都是考这个?现在才知道原来还是有用处的)
9.人类这个个题能生存这么久,那么其实天生就会使用很多优秀的算法,只是我们没有发觉而已
好了 好了,才疏学浅就暂时能总结这么多了,等水平有了更高提升,对程序有了更高的理解再来写吧~~ 希望对大家有益。