1. 程式人生 > >一份程式設計師必備的經典演算法書單

一份程式設計師必備的經典演算法書單

當我們在工作中使用演算法時,通常都是希望能更有效地解決問題、使程式執行得更快,並且讓解決方案變得更為簡短。但實際情況如何呢?我們獲得所需要的效率、速度和簡潔性了嗎?為什麼人們在使用Python這種語言時依然要在乎這些事呢?選擇這種語言對於追求高速度的人來說是一個好的開端嗎?為什麼不選擇C或Java這樣的語言呢?

首先,可能是因為Python語言本身很討人喜歡,以至於人們不想換別的語言,或者他們目前也沒有更好的選擇。但最為重要的可能還是第二點,即在這裡,演算法設計者們首先要擔心的並不是常數級別的效能差異。即便相關程式完成任務所需要的時間是另一程式的兩倍,甚至十倍,但這樣的速度可能依然是夠快的。況且,那個較慢的程式中可能恰好有某些我們所需要的特性,如它可能有更好的可讀性。而調整和優化程式在很多時候會非常費勁,其代價是不容小視的。然而,無論選擇什麼語言,我們都得考慮一下程式自身的彈性問題。也就是說,如果我們將程式的輸入量翻倍,會發生什麼呢?程式執行時間會是之前的兩倍?四倍?還是更多?或者即便增加那麼一丁點的輸入量也會導致程式執行時間的成倍增長?當您遇到的問題足夠大的時候,這樣的效能差異顯然就不能再靠簡單的語言選擇或硬體選擇來解決了。在面對一個“足夠大”的問題時,我們能抑制執行時間增長的主要武器就只有——您猜對了——一份紮實的演算法設計功底了。

今天小編帶來了一份誠意演算法書單。

 

演算法篇

入門級

 

《趣學演算法》

 陳小玉 著

640?

本書從演算法之美娓娓道來,沒有高深的原理,也沒有枯燥的公式,通過趣味故事引出演算法問題,包含50多個例項及完美圖解,結合學生提問,分析演算法本質,並給出程式碼實現的詳細過程和執行結果。

本書可作為程式設計師的學習用書,也適合從未有過程式設計經驗但又對演算法有強烈興趣的初學者使用,同時也可作為高等院校計算機、數學及相關專業的師生用書和培訓學校的教材。

 

《趣學學習與應用從入門到精通》

張玲玲 著

 

640?wx_fmt=png

本書的特色是實現了入門知識、例項演示、範例演練、技術解惑、綜合實戰5大部分內容的融合,讓讀者看得懂、用得上、學得會。

一本書的容量,講解了入門類、範例類和專案實戰類三類圖書的內容。豐富的配套資源 ,學習更高效。

320個例項,更多的實踐演練機會753分鐘視訊講解,降低學習難度5個綜合案例,專案實戰演練74個技術解惑,破解學習難點“技術講解”→範例演練”→“技術解惑”貫穿全書,全面掌握演算法應用技術講解:通過320個例項,循序漸進地講解了演算法應用的各個知識點。範例演練: 5個綜合例項,使讀者具有應用演算法解決實際專案的能力。技術解惑:把容易混淆的概念單獨講解和剖析,幫助讀者繞過學習中的陷阱。

 

《文字上的演算法——深入淺出自然語言處理 

路彥雄 著

640?wx_fmt=jpeg

微信整合搜尋演算法組組長路彥雄全新作品,深入淺出講解自然語言處理和機器學習技術,微博總閱讀量超30萬次。

本書結合作者多年學習和從事自然語言處理相關工作的經驗,力圖用生動形象的方式深入淺出地介紹自然語言處理的理論、方法和技術。本書拋棄掉繁瑣的證明,提取出演算法的核心,幫助讀者儘快地掌握自然語言處理所必備的知識和技能。本書適合從事自然語言處理相關研究和工作的讀者參考,尤其適合想要了解和掌握機器學習或者自然語言處理技術的讀者閱讀。

 

《演算法謎題》

【美】Anany Levitin 著

640?wx_fmt=jpeg

演算法是電腦科學領域最重要的基石之一。演算法謎題,就是能夠直接或間接地採用演算法來加以解決的謎題。求解演算法謎題是培養和鍛鍊演算法思維能力一種最有效和最有樂趣的途徑。 

本書是一本經典演算法謎題的合集。本書包括了一些古已有之的謎題,數學和電腦科學有一部分知識就發源於此。本書中還有一些較新的謎題,其中有一部分謎題被用作知名IT企業的面試題。全書可分為4個部分,分別是概覽、謎題、提示和答案。概覽介紹了演算法設計的通用策略和演算法分析的技術,還附帶有不少的例項。謎題部分將謎題按照簡單、中等難度和較難三個層級分別列出。提示部分依次給出謎題提示,幫助讀者找到正確的解題方向,同時仍然為讀者留下了獨立求解的空間。答案部分則給出了謎題的詳細解答。

 

《程式設計之法:面試和演算法心得》

July 著

 

 

640?

 

    -蛻變於CSDN技術部落格“結構之法演算法之道”
  -內容涉及面試、演算法、機器學習三大主題 

    -作者數年的積累成果

  -進入IT行業求職筆試和麵試寶典

本書涉及面試、演算法、機器學習三個主題。書中的每道程式設計題目都給出了多種思路、多種解法,不斷優化、逐層遞進。第1章至第6章分別闡述字串、陣列、樹、查詢、動態規劃、海量資料處理等相關的程式設計面試題和演算法,第7章介紹機器學習的兩個演算法—K近鄰和SVM。

此外,每一章都有“舉一反三”和“習題”,以便讀者及時運用所學的方法解決相似的問題,且在附錄中收錄了語言、連結串列、概率等其他題型。書中的每一道題都是面試的高頻題目,反覆出現在近5年各大公司的筆試和麵試中,對面試備考有著極強的參考價值。

 

程式設計篇

Python

 

Python核心程式設計(第3版)

【美】Wesley Chun(衛斯理 春)著

 

640?wx_fmt=jpeg

                                                                           

暢銷經典的Python書,兼顧Python2和Python3,Python開發人員的案頭常備

Python是一種靈活、可靠且具有表現力的程式語言,它將編譯語言的強大與指令碼語言的簡潔性、快速開發特性整合起來。在本書中,Python開發人員兼企業培訓師Wesley Chun會幫助您將Python技能提升到更高的水平。  

本書涵蓋了成為一名技術全面的Python開發人員所需的一切內容。本書講解了應用開發相關的多個領域,而且書中的內容可以立即應用到專案開發中。此外,本書還包含了一些使用Python 2和Python 3編寫的程式碼案例,以及一些程式碼移植技巧。有些程式碼片段甚至無須修改就可以執行在Python 2.x或Python 3.x上。

 

Python程式設計(第3版)

【美】John Zelle(策勒)著 

640?wx_fmt=jpeg

                                                                           

Python之父作序推薦 ,Python 3 程式設計入門經典。本書以Python語言為工具教授計算機程式設計。本書強調解決問題、設計和程式設計是電腦科學的核心技能。本書特色鮮明、示例生動有趣、內容易讀易學,適合Python入門程式設計師閱讀,也適合高校計算機專業的教師和學生參考。 

 

《資料結構 Python語言描述

【美】Kenneth A. Lambert(蘭伯特) 著 

 

640?

                                                                              

在電腦科學中,資料結構是一門進階性課程,概念抽象,難度較大。Python語言的語法簡單,互動性強。用Python來講解資料結構等主題,比C語言等實現起來更為容易,更為清晰。 

 

《Python程式設計快速上手 讓繁瑣工作自動化

【美】Al Sweigart(斯維加特) 著 

 

640?wx_fmt=png

                                                               

Python3程式設計從入門到實踐,新手學習必備用書。美亞暢銷Python程式設計入門書。

本書快速教讀者掌握Python這一對初學者友好的語言。書中包含了很多實用的示例,供讀者學習和聯絡。通過本書,可以學會解決很多實際的任務和需求,包括在一個或多個檔案中搜索文字模式、通過建立修改移動和重新命名檔案和資料夾來組織計算機、抓取資料和資訊、更新Excel表格、自動傳送郵件和文字訊息、組織計算機執行週期性任務等等。

 

演算法篇

機器學習

 

《Python機器學習——預測分析核心演算法》

【美】Michael Bowles(鮑爾斯) 著

 

640?wx_fmt=png

                                                                 

 

在學習和研究機器學習的時候,面臨令人眼花繚亂的演算法,機器學習新手往往會不知 所措。本書從演算法和Python 語言實現的角度,幫助讀者認識機器學習。

本書專注於兩類核心的“演算法族”,即懲罰線性迴歸和整合方法,並通過程式碼例項來 展示所討論的演算法的使用原則。全書共分為7 章,詳細討論了預測模型的兩類核心演算法、預測模型的構建、懲罰線性迴歸和整合方法的具體應用和實現。 本書主要針對想提高機器學習技能的Python 開發人員,幫助他們解決某一特定的項 目或是提升相關的技能。

 

《Python演算法教程》

【挪威】Magnus Lie Hetland(赫特蘭) 著

 

640?wx_fmt=png

                                                                                      

暢銷書Python基礎教程(第2版)作者、Python領域大牛又一新力作!知識點清晰,語言簡潔。本書用Python語言來講解演算法的分析和設計,主要關注經典的演算法,幫助讀者理解基本演算法問題和解決問題打下很好的基礎。蘊含大量課後習題和參考資料。

 

《Python機器學習實踐指南》

【美】Alexander T. Combs 著

 

640?wx_fmt=png

                                                                            

 

機器學習是近年來漸趨熱門的一個領域,同時Python 語言經過一段時間的發展也已逐漸成為主流的程式語言之一。

本書結合了機器學習和Python 語言兩個熱門的領域,通過利用兩種核心的機器學習演算法來將Python 語言在資料分析方面的優勢發揮到極致。 全書共有10 章。第1 章講解了Python 機器學習的生態系統,剩餘9 章介紹了眾多與機器學習相關的演算法,包括各類分類演算法、資料視覺化技術、推薦引擎等,主要包括機器學習在公寓、機票、IPO 市場、新聞源、內容推廣、股票市場、影象、聊天機器人和推薦引擎等方面的應用。 本書適合Python 程式設計師、資料分析人員、對演算法感興趣的讀者、機器學習領域的從業人員及科研人員閱讀。

 

《神經網路演算法與實現——基於Java語言》

Alan M.F. Souza(艾倫)著

 

640?wx_fmt=jpeg

                                                               

 

神經網路已成為從大量原始的,看似無關的資料中提取有用知識的強大技術。 Java語言是用於實現神經網路的最合適的工具之一,也是現階段非常流行的程式語言之一,包含多種有助於開發的API和包,具有“一次編寫,隨處執行”的可移植性。

本書完整地演示了使用Java開發神經網路的過程,既有非常基礎的例項也有高階例項。首先,你將學習神經網路的基礎知識、感知機及其特徵。 然後,你將使用學到的概念來實現自組織對映網路。 此外,你還會了解一些應用,如天氣預報、疾病診斷、客戶特徵分析和光學字元識別(OCR)等。 最後,你將學習實時優化和自適應神經網路的方法。