這樣說吧,如果你只是從事普通的工作崗位,對演算法要求不高的話,就不必刻意的去學習了。事實上,演算法在日常編程中都會用到的,最好懂一些吧。
如果你想從事高端職業,例如AI,游戲,這就需要演算法的知識了,而且很重要!
Ⅱ 我是個程序員感覺自己的邏輯思維能力不強,如何提高
多多訓練自己,每次訓練後自己反思自己哪裡還不行,就行我們考試一樣~~
Ⅲ 程序員一定要演算法能力強嗎
演算法能力強對於低級點的程序員不是必須但是成為高級的程序員就是必須的了,演算法學的好的話,不論對你思考問題的方式還是對你編程的思維都會有很大的好處。演算法的學習不只是理論的支持,更需要你不斷的在理論的基礎上去code,去思考。
Ⅳ 大多數程序員演算法很垃圾嗎
大多數程序員演算法垃圾。根據查詢相關信息顯示:大多數程序員的演算法是根據課本上的老舊的演算法,效率低,沖突率大。
Ⅳ 為什麼程序員普遍缺乏數據結構和演算法的知識
語言只是工具,而演算法才是程序的靈魂。這句話,我估計你在編程之路上,已經聽到過無數次。但具體到工作里,你是不是還會有下面這樣的困惑?數據結構和演算法,跟操作系統、計算機網路一樣,是脫離實際工作的知識。除了面試,我可能這輩子也用不著。就算不懂這塊知識,只要 java API、開發框架用得熟練,我照樣可以把代碼寫得「飛」起來。那今天我就來詳細聊一聊,為什麼要學習數據結構和演算法。
如果你理解他們背後對應的數據結構,那就可以迅速看到這些類背後的本質區別,那個時候,你根本不用死記硬背,自然理解什麼樣的場景里該選擇什麼。在西安交大讀研究生的時候,一個師兄給了我一本《演算法導論》,從此我便一頭扎進演算法世界,到現在也十多年了。這期間,我研究過數十本數據結構與演算法的書籍,並對它們進行了仔細地對比、分析。
Ⅵ 演算法不扎實的程序員,每一個都很慌
初學者經常問這樣的問題,然而這些其實是錯誤的問題。
對於初學者而言,你最應該優先考慮的是,哪些東西構成了程序的基礎?
最經典的一句話: 程序 = 數據結構 + 演算法 。
如果說編程語言是程序的血肉,那麼演算法就是程序的靈魂。
人不能沒有血肉之軀,但是沒有靈魂的人依然只是一個死人。
不能單純依靠演算法衡量一個程序員的好壞,但是面試的時候考演算法絕對是簡單高效的篩選手段。近些年大廠的面試幾乎必考演算法也是這個原因。每一個演算法學的不扎實的程序員,在面試的時候都很慌。
下面這些書籍應該是演算法方面最常見的經典書籍。我有幸都讀過,有些讀完了,有些半途而廢,不過基本上也都算是熟悉。順序上由易到難,從薄到厚,每本書下面我會簡單的介紹一番,希望能對你的學習有所幫助。
首先是兩本演算法入門書籍,也可以當做演算法讀物:
《啊哈!演算法》
用他的自我介紹的來講:「這不過是一本有趣的演算法書而已,和別的演算法書比較,如果硬要說它有什麼特點的話,那就是你能看懂它。」
圖文並茂,而且畫風有趣,適合新手入門,但是代碼是C的,看著比較累,文字也略顯冗長。
圖是非常棒的,啟蒙用,非教科書
《演算法圖解》
和《啊哈》類似,他的介紹是:「像小說一樣有趣的演算法入門書。」
書裡面講的很好,python代碼也很容易讀懂,比之《啊哈!演算法》,書中的例子沒有那麼有趣,但是圖很清晰,文字和代碼不冗雜。
缺點同樣是非教科書,非常淺顯,三四個小時就看完了。有一種剛剛熱身的感覺。
接下來這幾本都是最常見的書了:
《數據結構與演算法分析C語言描述》
這本書的作者幾乎不浪費筆墨在一些簡單的地方。書很薄,但是覆蓋面很廣很深,作者實在是非常厲害。
不過反過來說,就是有些地方講的語焉不詳……
這本書還有Java語言版本的,但是相比之下C的更好一些。
挺好的一本書。
還有一點是翻譯不是很給力,好多人都沒堅持看完。
《數據結構與演算法Python語言實現》
英文版評分非常高,中文版評分非常低……
據說是也翻譯的不好。另外就是本書自身錯誤也不少……幾版過後依然很多沒有改過來。
書中數學證明和介紹比較簡單。因為採用Python語言的原因,比較易讀。
淺顯易懂,內容上循序漸進,環環相扣。相比於上一本,我會更推薦一些。厚度也不算厚。
《數據結構與演算法 Python語言描述》
北大教授裘宗燕的書,這本書前面寫的挺好的,尤其是在面向對象還有ADT等思想的闡述,都很不錯。
但是讀到後來給我一種虎頭蛇尾的感覺,前面氣勢如虹緒論就寫了很長,最後三章感覺有點草草收尾的意思。就像編輯在催稿,而作者很忙的樣子……
另外就是這本書的編排順序我個人也不是特別喜歡。
接下來是兩本大部頭,都是非常厚的書。
他們最大的特點就是:出現率遠大於看完率
《演算法導論》
演算法書中的權威,MIT的6.046J就是按照這個來講的。
公認最好的演算法書,組織結構合理,內容詳盡。引導讀者從思維方式上對演算法進行領悟。
書中對演算法的數學結構進行了詳盡的闡述。有非常多的數學證明。
這本書我說不出什麼缺點,只能說有些內容是因為我還沒到大牛的境界,暫時還無法體會理解。
我個人的觀點是:不要糾結於詳細的偽代碼,不用糾結於連篇累牘的講解。體會其中演算法的精髓就好。
《演算法》第四版
如果說,《演算法導論》是學術上最好書,那這本應該是實際應用最好的書。
它對數學的要求比《演算法導論》低很多,摒棄了演算法的證明。
書中具體給出了每位程序員應知應會的50個演算法,深入淺出,大量圖解。非常棒。
java基礎的話你能擼出來Hello World基本上就可以開始看這本書了,這本書最大的不友好之處在於它的第一章非常長,沒看過的人又不知道哪裡可以跳過。
這本書後面的翻譯感覺不如前邊了,不知道是換人了還是DDL了……
翻開書就會看到很多的圖,配套作者在coursera上面的課程學的話事半功倍!
接下來的幾本我看的比較少,簡單介紹一下,希望大家自己去發現和了解,不要漏下這些好書:
《編程珠璣》
很薄一本啊,但是我放在那還沒看完……
這本書被稱為: 歷史 上最偉大的計算機科學著作之一
融深邃思想、實戰技術與趣味軼事於一爐的奇書。
內容不深,但是不是一個知識點一個知識點的給你講解演算法原理的。
這本書的核心思想是讓你了解如何正確選擇和高效地實現演算法。書中還有一些趣聞軼事,看著倒是很有意思~
有興趣的同學可以看看~
《演算法競賽入門經典》系列
演算法競賽入門經典書,ACM必備書籍吧算是。書中題目對於競賽來說比較簡單,但是對於一般我們平時工程來說偏難。語言用的是C/C++,請好好做例題好好做作業,讀書的時候好好思考和復習~
反正我是沒讀過,捂臉……
《劍指Offer》
這個書很有意思,對於在校生來說我個人覺得是必看的書。沒有任何工作經驗的同學在面試的時候真的會被問懵的。這本書可以讓你了解如何應付考官日常問題,在解答面試問題的時候,書中很多方法和思路會讓考官覺得你思考的很全面,給你加不少分。
我面試的時候也曾快速掃過一遍這本書,讓我在回答問題的時候條理更清晰。書中代碼是C的,emmm,於是代碼部分我就沒太看……
《用Python解決數據結構與演算法問題》
最後給大家推薦一本在線的 免費 的演算法書。
https://facert.gitbooks.io/python-data-structure-cn/
不是大部頭,也不是讀物,新手入門足夠用,書中介紹了大多數日常需要的演算法,並且講的比較淺顯~轉行的新手基本可以通過這本書來快速掌握常用基本演算法了~
反正免費,是否適合自己看兩頁也就get了~
如果需要PDF版,可以在「程序員必修課」公眾號後台回復:「Python演算法書」獲取。
Ⅶ 程序員,感覺技術停滯了怎麼辦
你是一名程序員,感覺技術停滯了。那你就去深造唄,就是你可以選擇各種的程序任務去做。哦!針對自己有弱點的地方,然後去學習。活到老,學到老。
Ⅷ 我一直在做程序員,但我的邏輯思維能力較差,怎麼辦
你這種情況,最好還是放棄程序員這個工作,尋找一個新領域吧。工作應該是快樂的,而不只是為了獲得收入。
Ⅸ 程序員如何提升演算法思維
持續學習,持續開發,是目前主流IT業界程序員的一個生活常規,在現代技術迭代速度非常快的情況下型罩,只有不斷保持自我學習和探索才不會與時代脫節。無論是專業的IT從業者還是IT小白,都需要培養自己的算卜兄鬧法思維。南邵電腦培訓發現擁有良好演算法思維後的直接好處有:更高的面試成功機會,和更快的日常問題處理能力。
何為演算法思維,並不是對一些已經設計好的優秀代碼的反復背誦和背板,而是自己對於問題的抽象能力的練習,即從抽象問題到實際進行編碼或者設計程序解決問題的一個能力,如果單純對於一些演算法進行背誦的話,我們的思維能力不會得到提升,最多就是熟練的碼農而已。所以,當看到別人設計的優秀演算法後,我們一定要探尋演算法背後那「曲徑通幽」的思維之路。只有經歷了思維之路的磨難,才能永遠佔有一個演算法,並有可能舉一反三,或者是設計一個巧妙演算法。
個人認為,對於提升演算法思維的方法,首先我們需要深入思考各種苦惱的問題,例如:
假設我喜歡租車出行,那麼對於某一個地方的停車點一般在什麼時候有車的機率最大?有車的概率是否與天氣,溫度等因素有關?
我希望可以在回家之前通過手機APP讓家裡的空調提前工作起來,但塵飢是我非常Geek,不想使用現成的產品而想自己實現一個,和同學吹牛的時候可以更加脫穎而出?
在明確了這些問題以後我們就可以開始思考如何嘗試寫一個小的程序來幫助自己解決,這個時候如果手頭有一個習慣的語言就非常合適了(比如我個人就喜歡Python,有很多庫可以使用,而且入門非常容易),如果沒有的話,可以去看看各個語言合適的場景,不過對於爬蟲、數據分析相關個人認為更加貼合日常生活的項目來看,還是考慮直接從Python3起步比較好,後期如果想用樹莓派做點智能家居相關的項目的話Python也是非常合適的。
對於Python的學習,目前有很多非常成熟的課程,可以覆蓋各個不同的能力范圍,這里著重推薦Coursera的視頻課程,配合本地IPython或者LeetCodePlayground一起調試和練習,可以獲得很好的效果。