談下程序設計算法的準備心得與體會-nCov隔離也許幫你提升能力
- 2020 年 2 月 12 日
- 筆記
最近武漢的n-Cov使得大家只能在家辦公了。
在家裡的感受是什麼樣的呢?
1.上班的時候一直在奔跑,現在總算可以有集中的時間來思考一些之前一直沒能好好整理的內容
2.時間變得自己可以掌控,優先級有自己掌控,暫時這一兩個星期不需要為錢而奔波,感覺每天其實過得很充實
首先聲明我不是什麼算法高手,身邊有很多算法高手太厲害了,我僅是一名考慮如何將孩子們能領入計算機正確之門的教育工作者。
最近因為要給一些孩子(5年級到初中)講下基礎算法,而且孩子肯定是需要深入淺出的,這樣其實對老師是個很高的要求。
為了不給孩子帶錯路,不讓孩子們覺得算法很難產生抵觸情緒,本人最近在閱讀大量的資料和上各個大學的公開課。通過大量閱讀資料和視頻學習,發現當老師真是一個教學相長的過程。
讀大學那會兒學習都沒這麼認真過:)
1.目標與出發點
主要從以下幾個方面:
1.如何用簡單形象化的例子來講述一個算法,最好是生活中的列子
2.找一些能用簡單代碼來體會算法的例子
3.如何歸納出,看到題目,大概能反應出題目考的是哪個算法
4.使用這些算法解題要注意的關鍵點
2.參考書籍
下面是參考的一些書籍,書籍真的是世界上最好的東西,作者一般都是在書中盡量傾其所有。但是書籍的作者一般會寫作專註於某一個或多個方面,和一部分特定人群,所以需要博覽群書來提取符合自己的內容。
下面是我參考的一些書籍,感覺角度和內容還是比較豐富。
書中有幾段文字,還是挺有意思的,我也截圖了一下:
— 「從本質上說,算法只是做事的方法,因此一個不怎麼會寫程序的數學家也可是算法領域的頂尖高手」
— 「以對一個無序數列進行從小到大排序的問題為例,小學生都能想出的『插入排序』算法,大多數人打牌摸牌的同時,讓手上的同色花牌保持有序,就是用的這種方法」
其實我們生活當中,不自然的在應用一些非常好的算法。
—「算法可以說是程序的靈魂。算法水平額高低很大程度上決定了程序員的層次。」
—「沒有算法工地的程序員俗稱為碼農,大多只能從事技術含量低、機械的編程工作。一般IT培訓機構不教算法,培養的就是此類人員。」
3.成果與感受
通過前期零散的總結和,這一周的集中攻克,終於折騰出了下面10多份,自己還比較滿意的教案
下面這個網站給我幫助很大,分享你們
https://www.geeksforgeeks.org/
在線視頻我覺得比較好的
算法研究學習的一些心得體會,也許很多人覺得淺顯,不過自己感覺還是很有滿足感的,所以寫一下:
1.基礎程序設計是for,while循環,加上判斷語句
2.程序設計水平的提升,在於你能熟練使用遞歸,掌握了遞歸你能控制計算機程序就進入了另外一個階段
3.大的問題,看起來很複雜,那麼我們只能使用分而治之的手法,將大問題分解成為小問題,通過解決小問題來完成大問題的解
4.有些問題,窮舉所有情況是NP完全問題,那麼計算近似解又快又簡單,比方貪心算法
5.計算機擅長的是什麼?按照一個式子重複性的工作,那麼如果一個問題我們能推導出一個遞推式,並且能給出終止條件(也就是問題被分解到足夠小,並能求解時的條件),剩下的就交給計算機來完成吧
6.程序的調用棧這個東西很有意思,先擱置一連串待解決的問題,等棧頂這個問題解決了,一連串問題,像多米諾骨牌一樣,全部解決:)
7.當然請大概估算一下時間複雜度和空間複雜度,犧牲時間換空間?犧牲空間換時間?存儲已計算過的值來避免重複計算
8.當然還有一眼看不出,想不到全局最優解時,可以考慮局部最優解,或許局部最優解能推出整體最優解,呀,好像還要用數學歸納法證明(高中最後一題,一般是不是都是考這個?現在才知道原來還是有用處的)
9.人類這個個題能生存這麼久,那麼其實天生就會使用很多優秀的算法,只是我們沒有發覺而已
好了 好了,才疏學淺就暫時能總結這麼多了,等水平有了更高提升,對程序有了更高的理解再來寫吧~~ 希望對大家有益。