摘要:現(xiàn)在發(fā)出來的版本,我重新使用了語言實現(xiàn)。其實我之前介紹的老師課程也大量參考和使用算法這本書上的思路和例題。看這本書主要是讓我覺得算法可以以比較輕松的方式入門。劍指這本書主要用于準(zhǔn)備算法面試,在網(wǎng)絡(luò)上備受好評。
我是一個半路出家的“程序員”,在我剛開始從事編碼工作的頭幾年,我沒有接觸過“算法和數(shù)據(jù)結(jié)構(gòu)”,覺得它們是只會在我找工作的時候用得到的知識。盡管有很多人跟我說過“算法和數(shù)據(jù)結(jié)構(gòu)”無比重要,我也很相信“算法和數(shù)據(jù)結(jié)構(gòu)”很重要,但萬事“開頭難”、“開頭難”、“開頭難”……
為什么“難”?因為不知道應(yīng)該如何入門,手邊沒有很好參考資料,身邊也沒有從事算法工作的同事,連個會算法的科班出身的同事都沒有。
終于有一天,我終于開始了,從此入坑。
于是乎,我想寫一個系列文章,記錄一下我學(xué)習(xí)過的“算法與數(shù)據(jù)結(jié)構(gòu)”的過程,如果有幸能夠給一些朋友幫助,我會感到很榮幸。
如果你想在“程序員”的道路上走得更遠(yuǎn)的話,“算法與數(shù)據(jù)結(jié)構(gòu)”是必學(xué)的,越早學(xué)習(xí)越好。
我是誰?我是一個本科數(shù)學(xué)專業(yè),其實數(shù)學(xué)一點都不好的程序員,如果你有更好的學(xué)習(xí)建議,歡迎指點、交流。
參考資料先從“參考資料”說起吧,“算法和數(shù)據(jù)結(jié)構(gòu)”是一門非常抽象的學(xué)科,就像非數(shù)學(xué)專業(yè)的學(xué)生學(xué)習(xí)數(shù)學(xué)一樣,如果沒有很形象、生動的學(xué)習(xí)資料,入門就會是一件非常痛苦的事情。因此,找好“參考資料”很重要。
入門視頻教程我的算法入門課程是慕課網(wǎng) liuyubobobo 老師的《玩轉(zhuǎn)算法》課程。這門課程我是在 2017 年 5 月的時候?qū)W習(xí)的,可以說通過這門課程的學(xué)習(xí)打開了我進(jìn)入“算法與數(shù)據(jù)結(jié)構(gòu)”學(xué)習(xí)的大門。 liuyubobobo 老師的講解十分細(xì)致,配合了制作精美的動畫,大大降低了抽象的算法的理解程度,如果你對“算法和數(shù)據(jù)結(jié)構(gòu)”一無所知,強烈建議你看看這個老師的視頻教程,不懂的地方多看幾遍,看完要做筆記,要練習(xí)。 liuyubobobo 老師是用 C++ 語言講解的這個課程,我當(dāng)時只會 Java ,不過一點都不影響理解,正如 liuyubobobo 老師的介紹“算法與數(shù)據(jù)結(jié)構(gòu)應(yīng)該是與語言無關(guān)的”。
我這個系列的文章,在開始的部分,基本會按照 liuyubobobo 老師課程的思路來,其實很多就是我學(xué)習(xí)這門課程的時候的筆記,只不過是我已經(jīng)來來回回修改了好幾遍了。現(xiàn)在發(fā)出來的版本,我重新使用了 Python 語言實現(xiàn)。在人工智能、機器學(xué)習(xí)、深度學(xué)習(xí)、數(shù)據(jù)科學(xué)大行其道的今天,Python 又是如此簡單、易用,我們沒有理由不用 Python。
我可以,相信聰明的你也一定可以。
這是我做的筆記。
這里要說明一點:在我的系列文章中出現(xiàn)的學(xué)習(xí)資料,不論是網(wǎng)絡(luò)視頻、書籍還是介紹算法的網(wǎng)站、刷題網(wǎng)站,都只是我自己的學(xué)習(xí)路徑的真實介紹,沒有任何廣告的意思,我只是覺得它們好,并且我真的從這些資料上學(xué)到了東西,所以我才寫在這里。事實上,聰明的你無須付費就可以獲得它們,并使用它們。
入門書籍 我的算法入門書籍:《算法4》這里的 4 是第 4 版的意思,這是一本非常經(jīng)典的外文讀物,已經(jīng)有中文譯本了。這本書和《算法導(dǎo)論》一樣厚,但比《算法導(dǎo)論》要生動很多,同時也是國外名校使用的一門非常經(jīng)典的教材。
這本書的特點:
1、顏值特別高:紅色的封面,里面的紙像打印值一樣白,閱讀的時候很舒服;
2、結(jié)構(gòu)很清晰,每一個算法都有代碼實現(xiàn),主要還是 Java,我當(dāng)時只會 Java 語言,看這本書其實沒有什么阻力;
3、這本書還有配套的網(wǎng)站,你可以去這個網(wǎng)站上下載書中的代碼。
其實我之前介紹的 liuyubobobo 老師課程也大量參考和使用 《算法4》 這本書上的思路和例題。兩者配合著學(xué)習(xí),并且要練習(xí),可以說是非常完美了。
下面再說一說其它的書籍:
《算法導(dǎo)論》我是學(xué)習(xí)了《算法4》(當(dāng)然沒有看完)再去看《算法導(dǎo)論》的,很多地方其實都容易理解得多,《算法導(dǎo)論》有一點對初學(xué)者很不友好的地方,那就是所有的算法代碼都是偽代碼,但這毫不影響《算法導(dǎo)論》的地位,或許《算法導(dǎo)論》根本就不是給初學(xué)者看的。
《算法圖解》這本書我是和《算法4》一起買的,一本很小的書,用 Python 語言實現(xiàn),看著玩,圖中的插畫很生動。看這本書主要是讓我覺得算法可以以比較輕松的方式入門。
《劍指 Offer》:這本書主要用于準(zhǔn)備算法面試,在網(wǎng)絡(luò)上備受好評。里面有很多問題是和 LeetCode 重合的,作者會以面試官的角度給出對這些問題考察的內(nèi)容。
鄧俊輝老師《數(shù)據(jù)結(jié)構(gòu) C++ 語言版》其實最早認(rèn)識鄧?yán)蠋熓撬?mooc ,他制作的算法與數(shù)據(jù)結(jié)構(gòu) flash 動畫是十分生動的,它的教材和課件風(fēng)格是一致的,他在教學(xué)中還賦予了算法比較優(yōu)雅的哲學(xué)含義。在內(nèi)容上,涉及到了一些高級數(shù)據(jù)結(jié)構(gòu),例如紅黑樹、B 樹等,如果理解高級數(shù)據(jù)結(jié)構(gòu)有困難的話,可以看看他的 mooc 或教材。
刷題網(wǎng)站 LeetCode傳送門:LeetCode。
想熟練掌握常用的算法和數(shù)據(jù)結(jié)構(gòu),刷題是必經(jīng)之路。
LeetCode 是國內(nèi)外公認(rèn)的刷題網(wǎng)站,這個網(wǎng)站上羅列的問題是一些知名公司的面試問題。
這個網(wǎng)站現(xiàn)在已經(jīng)有中文版了,對于看英文比較吃力的朋友,例如我來說,是一個好消息。不過中文版里面的討論的內(nèi)容沒有英文版多,所以,想要參考別人寫的代碼可以到中文版上看題目的翻譯,到英文版里看別人的代碼。
順便說說,我在刷題的過程中,我找到了一些視頻資源,這些視頻資源也可以幫助你理解一些問題,可能大伙在刷題的時候也會搜索到它們的視頻資源或者個人博客,它們是“Cspiration”、“花花醬”、“小 Q”、“小 Fu”等。
LintCode傳送門:LintCode。
這個網(wǎng)站可以作為 LeetCode 的補充,不過我看大家刷得比較多的還是 LeetCode。
ACWING傳送門:AcWing。
這是我在 B 站上看到一個北大研究生“大雪菜”做的直播時看到的網(wǎng)站,AcWing = Accepted + Wing,簡稱AC 之翼。在上面可以刷一些 LeetCode 上沒有的 《劍指 Offer》的題,“大雪菜”還會在直播里給你講每道題的思路,這個網(wǎng)站上還有一些活動,激勵里去刷題和分享,我覺得還是很不錯的。
總結(jié)1、培養(yǎng)興趣
學(xué)習(xí)《算法與數(shù)據(jù)結(jié)構(gòu)》是一項工程,并不是一件特別輕松的事情,所以我覺得剛開始的時候,培養(yǎng)興趣是很關(guān)鍵的,要讓自己認(rèn)識到學(xué)習(xí)《算法和數(shù)據(jù)結(jié)構(gòu)》是十分有用的。
2、樂于分享
不止一個人告訴我應(yīng)該把自己的解題思路寫成文字分享出去了。寫成文字可以幫助自己思考,也方便以后查看,也能幫助到別人。事實上,互聯(lián)網(wǎng)上這樣的人有很多,應(yīng)該成為他們中的一員。
3、堅持
貴在堅持,不要輕易說放棄。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/45038.html
摘要:所以后面還是要對著機器學(xué)習(xí)實戰(zhàn)這本書一行一行的手敲代碼,然后把每一行都弄懂,全部做完之后再做一遍,這樣才可能真正的熟悉起來。這段時間上下班的路上一直在用讀的微積分部分,一方面可以練習(xí)英文口語,另一方面可以學(xué)習(xí)如何從更加直觀的角度理解微積分。 2017-03-05記錄 這一周沒怎么有進(jìn)度學(xué)習(xí)編程,主要是工作上占用了很多的時間,同時自己感覺也進(jìn)入了一個平臺期,對于編程有些疲倦了。 首先是不...
摘要:選擇排序算法實現(xiàn)實現(xiàn)選擇排序,記錄最小元素的索引,最后才交換位置說明交換兩個數(shù)組中的元素,在中有更簡單的寫法,這是的語法糖,其它語言中是沒有的。和語言中比較器的實現(xiàn)前面我們說到了,我們?yōu)榱送怀雠判蛩惴ǖ乃枷耄瑢⑺械睦觾H限在數(shù)組排序中。 showImg(https://segmentfault.com/img/remote/1460000017909538?w=1949&h=1080...
摘要:興趣最后該說說的就是興趣問題如果你能對它真正感興趣如果要從事軟件開發(fā)又沒興趣的話趕緊先培養(yǎng)興趣去對看技術(shù)資料就想別人看武俠小說看球賽一樣的話再配合上面提到的幾點踏實先專后廣基礎(chǔ)扎實相信在這一行多少是可以做點東西出來的 踏實 偶然在網(wǎng)上看到《由C#風(fēng)潮想起的-給初學(xué)編程者的忠告》一文. 其中一個角度:避免浮躁,倡導(dǎo)踏實的學(xué)習(xí)方法,我是很認(rèn)同的,但總覺該文作者標(biāo)題-給初學(xué)編程者的忠...
摘要:居安思危,及時跳出舒適圈我之前是在網(wǎng)易做審核專員,就是審核新聞資訊,以及自媒體的內(nèi)容,處理垃圾信息。盡管目前工資很可觀,福利很好。于是我就下定決心,要跳出這個舒適圈,換一份有技術(shù)含量的工作,這樣才能走得長遠(yuǎn)。 ...
閱讀 662·2021-11-23 09:51
閱讀 3610·2021-11-15 11:38
閱讀 943·2021-10-14 09:42
閱讀 3182·2021-09-29 09:35
閱讀 2123·2021-09-03 10:33
閱讀 778·2021-07-30 16:33
閱讀 1568·2019-08-30 15:55
閱讀 1853·2019-08-30 14:04