Ⅰ 程序員打基礎必看書籍!
1、《深入理解計算機系統》
從c語言到匯編語言到硬體再到操作系統,寫得非常好。是一本能幫助深入理解計算機系統的書。基本上把這本書吃透面試操作系統的大部分問題都不是問題。
2、《演算法導論(第三版)》
被很多acmer coder奉為學演算法的經典之作,但不太適合初學者,因為它這本書很多內容只提供了偽代碼,而沒有具體實現。但可以從這本書學數據結構和演算法好,因為日後的編程語言對實現而言實際上並沒有特別大的障礙,只是適合與不適合的選擇罷了,而把想法轉換成編程語言才是對演算法知識的考驗。如果不想太過深入的話可以忽略掉第四部分(高級設計和分析技術)第五部分(高級數據結構)和第七部分(演算法問題選編),你會發現書其實比你想像中薄很多噢!
3、《計算機網路:自頂向下方法》
軟體學院的計算機網路教材,非常適合初學者,裡面將計算機網路從頂層到底層逐章分析了一遍,如果能夠結合一些實驗來輔助理解會更好,因為裡面的講解比較抽象。
4、《STL源碼剖析》
如果你是經常用c++刷演算法題的同學,那麼一定經常用STL的各種集合, vector, set, stack, queue等等。它們的實現原理,在源碼面前,完全沒有秘密。
5、《圖解HTTP》
日本人著的介紹HTTP協議的書,對理解HTTP協議的一些細節有非常大的幫助,插畫也很多,感覺就像看漫畫一樣,很容易理解的。
6、《TCP/IP詳解卷一》
這本書能把枯燥的知識講得很細致,強烈推薦這本,看完相應章節後大概能夠明白為什麼TCP/IP要這么設計了。面試的時候經常問到三次握手和四次揮手,還有各種狀態的轉移, TIME_WAIT的時間為什麼是2*MSL······
7、《UNIX網路編程卷一:套接字聯網API(第三版)》
中文版快800頁,不過我只看了一些章節,這本書也是把TCP/IP的細節講得很深很深,此外還有非常重要的基本套接字編程,就是寫網路程序的時候那些bind, accept, listen, send, receive函數之類的,內容非常多,但是這些是理解多路復用模型所需要掌握的······select/poll/epoll這些系統調用解決了什麼問題?事件機制能不能理解?就看這本書的前六章了。
8、《資料庫管理系統(原理與設計)》
這個也是web開發中離不開的東西,必須劃重點學會的是ER圖/SQL語句/存儲數據(磁碟|文件|RAID|緩沖池等)/三大範式/索引以及相應的數據結構/事務相關的所有概念,尤其重點學習SQL 。之後學會使用mysql workbench來進行資料庫建模/逆向工程生成建表語句/根據SQL生成JAVA實體類等就不贅述了,開發過程中網路谷歌一下就知道啦,然後如果習慣在windows下開發的同學推薦利用navicat這個好東西。
Ⅱ 問下,演算法導論是看英文版還是中文版的好如果英文版的話哪裡能買到,亞馬遜和京東似乎都沒有
建議讀中文的。
分析:
1.《演算法導論》是一本可謂「面面俱到」的書,其中對演算法的證明佔了很大的比重,這在一般的演算法書中並不多見,也是它嚴謹性的體現。中英文在理解上的區別也就在於如何引出這個演算法、演算法為什麼正確上。但是這些證明雖然有重要意義,但是在實用價值上一般比不上演算法本身。我自己在學習演算法的時候都是先了解演算法思想,再了解演算法執行過程,再記住代碼,然後做題,最後再來回顧導引和證明,即先知其然,再知其所以然。不能光知其然,那樣無法掌握思想,思想才是精髓;而一上來就直奔證明,又缺乏學習效率。(也可能這只是我個人的特點)就演算法執行過程本身,中英文都一樣,而且由於偽代碼本身並無區別,所以先讀中文,以掌握演算法。
2.當參加國際比賽的時候,題目都是用英文描述;當對演算法的研究再上一個層次的時候,國內的譯材已經不能夠滿足學習需要了。要想進步,達到高層次的領域,實現「出色」和「領先」,就一定要大量研讀外國文獻。這要求英語必須要好。
綜上,我的建議是:讀中文版《演算法導論》,掌握演算法,再看解釋,理解它,才能更好地運用。學好英語,為達到更高的層次做准備。《演算法導論》內容非常豐富,應該讀好幾遍,到時候再看英文的也不遲。
Ⅲ 請大俠給我推薦幾個演算法的書.因為我沒讀過,所以請在回答的時候告訴我推薦的理由,最好有內容.
《演算法導論》
本書深入淺出,全面地介紹了計算機演算法。對每一個演算法的分析既易於理解又十分有趣,並保持了數學嚴謹性。本書的設計目標全面,適用於多種用途。涵蓋的內容有:演算法在計算中的作用,概率分析和隨機演算法的介紹。本書專門討論了線性規劃,介紹了動態規劃的兩個應用,隨機化和線性規劃技術的近似演算法等,還有有關遞歸求解、快速排序中用到的劃分方法與期望線性時間順序統計演算法,以及對貪心演算法元素的討論。本書還介紹了對強連通子圖演算法正確性的證明,對哈密頓迴路和子集求和問題的NP完全性的證明等內容。全書提供了900多個練習題和思考題以及敘述較為詳細的實例研究。
目錄(Table of Contents)
前言(Preface)
第一部分(Part I) 基礎(Foundations)
第一章 計算中演算法的角色(The Role of Algorithms in Computing)
第二章 開始(Getting Started)
第三章 函數的增長率(Growth of Functions)
第四章 遞歸(Recurrences)
第五章 概率分析與隨機化演算法(Probabilistic Analysis and Randomized Algorithms)
第二部分(Part II) 排序與順序統計(Sorting and Order Statistics)
第六章 堆排序(Heapsort)
第七章快速排序(Quicksort)
第八章 線性時間中的排序(Sorting in Linear Time)
第九章 中值與順序統計(Medians and Order Statistics)
第三部分(Part III) 數據結構(Data Structures)
第十章 基本的數據結構(Elementary Data Structures)
第十一章 散列表(Hash Tables)
第十二章 二叉查找樹(Binary Search Trees)
第十三章 紅-黑樹(Red-Black Trees)
第十四章 擴充的數據結構(Augmenting Data Structures)
第四部分(Part IV) 高級的設計與分析技術(Advanced Design and Analysis Techniques)
第十五章 動態規劃(Dynamic Programming)
第十六章 貪婪演算法(Greedy Algorithms)
第十七章 分攤分析(Amortized Analysis)
第五部分(Part V) 高級的數據結構(Advanced Data Structures)
第十八章 B-樹(B-Trees)
第十九章 二項式堆(Binomial Heaps)
第二十章 斐波納契堆(Fibonacci Heaps)
第二十一章 不相交集的數據結構(Data Structures for Disjoint Sets)
第六部分(Part VI) 圖演算法(Graph Algorithms)
第二十二章 基本的圖演算法(Elementary Graph Algorithms)
第二十三章 最小生成樹(Minimum Spanning Trees)
第二十四章單源最短路徑(Single-Source Shortest Paths)
第二十五章 全對的最短路徑(All-Pairs Shortest Paths)
第二十六章 最大流(Maximum Flow)
第七部分(Part VII) 精選的主題(Selected Topics)
第二十七章 排序網路(Sorting Networks)
第二十八章矩陣運算(Matrix Operations)
第二十九章 線性規劃(Linear Programming)
第三十章 多項式與快速傅里葉變換(Polynomials and the FFT)
第三十一章 數論演算法(Number-Theoretic Algorithms)
第三十二章 字元串匹配(String Matching)
第三十三章 計算幾何學(Computational Geometry)
第三十四章 NP-完備性(NP-Completeness)
第三十五章 近似演算法(Approximation Algorithms)
第八部分(Part VIII) 附錄:數學背景(Mathematical Background)
附錄A 求和(Summations)
附錄B 集合,等等。(Sets, Etc.)
附錄C 計數與概率(Counting and Probability)
參考文獻(Bibliography)
索引(Index)
Ⅳ 學習數據結構,有哪些值得推薦的好書
在微信高校專業集裡面粘貼
入門
1.《啊哈!演算法》
2.《演算法設計與分析基礎》
3.《演算法引論:一種創造性方法》
4.原書名:Introction to Algorithms
中文名:演算法導論
5.數據結構與演算法分析:C語言描述(原書第2版)
進階
1.原書名:The Design and Analysis of Computer Algorithms
中文名:演算法設計與分析
作者:Aho,Hopcroft,Ullman
2.原書名:Algorithms Design Techniques and Analysis
中文名:演算法設計技巧與分析
作者:M.H.Alsuwaiyel
3.中文名:演算法與數據結構
作者:傅清祥 王曉東
程序設計競賽
1.原書名:Introction to Algorithms
中文名:演算法導論
作者:Thomas H.Cormen,Charles E.Leiserson,Ronald L.Rivest,Clifford Stein
2.原書名:Introction to The Design & Analysis of Algorithms
中文名:演算法設計與分析基礎
作者:Anany Levitin
4.演算法競賽 | 信息學奧賽一本通
5.演算法競賽 | 演算法競賽進階指南
Ⅳ 推薦一些關於演算法的書籍
1、數據結構與演算法分析:C語言描述(適合入門)
這本書相對於演算法導論要簡單一些,更適合入門。演算法導論其實有比較強的理論性,看起來比較吃力。
《數據結構與演算法分析:C語言描述》內容簡介:書中詳細介紹了當前流行的論題和新的變化,討論了演算法設計技巧,並在研究演算法的性能、效率以及對運行時間分析的基礎上考查了一些高級數據結構,從歷史的角度和近年的進展對數據結構的活躍領域進行了簡要的概括。由於《數據結構與演算法分析:C語言描述(原書第2版)》選材新穎,方法實用,題例豐富,取捨得當。《數據結構與演算法分析:C語言描述》的目的是培養學生良好的程序設計技巧和熟練的演算法分析能力,使得他們能夠開發出高效率的程序。從服務於實踐又鍛煉學生實際能力出發,書中提供了大部演算法的C程序和偽碼常式。
2、演算法設計與分析基礎(適合入門)
作者基於豐富的教學經驗,開發了一套對演算法進行分類的新方法。這套方法站在通用問題求解策略的高度,能對現有的大多數演算法都能進行准確分類,從而使本書的讀者能夠沿著一條清晰的、一致的、連貫的思路來探索演算法設計與分析這一迷人領域。本書作為第2版,相對第1版增加了新的習題,還增加了「迭代改進」一章,使得原來的分類方法更加完善。
3.0、演算法引論:一種創造性方法(適合入門)
和普通的演算法書不同,這本書從創造性的角度出發——如果說演算法導論講的是有哪些演算法,那麼演算法引論講的就是如何創造演算法。結合前面的演算法設計與分析基礎,這本書把能解決的演算法問題數量擴大了一個數量級。
3.1 演算法競賽 | 信息學奧賽一本通(算競入門)
AlphaWA同學推薦的入門書籍,網上沒有PDF版本,自己去淘寶買嘍。
3.2 演算法競賽 | 演算法競賽進階指南(算競進階)
Ⅵ 哪本數據結構與演算法最好
國外很多經典的
(因為以前搞ACM時都是用的C/C++,所以推薦的都是偏這塊的)
演算法導論就不說了,圖文並茂。
數據結構與演算法分析 (豆瓣) C
數據結構與演算法分析 (豆瓣) C++
數據結構與演算法分析 (豆瓣) 同上本,英文版
Weiss 的這幾本書都不錯,如果想順便學 C++ Template,建議看C++版的(後兩本)
個人覺得最適合入門的應該是Robert Sedgewick的《Algorithms》,這本書也有中文版,Coursera上有相應的視頻:
演算法,第一部分:Coursera - Free Online Courses From Top Universities
演算法,第二部分:Coursera - Free Online Courses From Top Universities
還有本書配套網站:http://algs4.cs.princeton.e/home/
Ⅶ 學習c++數據結構與演算法分析 看那本書比較好啊
如果你對C++不是非常熟悉的話,學習演算法的時候還是看C語言描述的比較直觀。再者演算法學習方面比較權威的有一本《演算法導論》,這本書講的很有深度,所以認真讀起來還是很有意思的。另外需要糾正一點,語言本身就是來實現演算法的載體,所以學透一門語言也是必須的。
維斯【美】編的《數據結構與演算法分析》(第三版)C++版,這本書我看了,很不錯的,講得很好,演算法導論。
維斯【美】編的《數據結構與演算法分析》(第三版)C++版這本書,開始講了一些簡單的需要的C++知識,其實這本書用到的C++特性很少,所以即使你對C++的了解不多的話也可以看的。
單純地做演算法建議用C。
Ⅷ c語言演算法經典入門書籍推薦!!!!!!!!!!!1最好是國外的書!
《演算法導論》原書名——《Introction to Algorithms》,是一本十分經典的計算機演算法書籍,與高德納(Donald E.Knuth)的《計算機程序設計藝術》(《The Art Of Computer Programming》)相媲美。 《演算法導論》由Thomas H.Cormen、Charles E.Leiserson、Ronald L.Rivest、Clifford Stein四人合作編著(其中Clifford Stein是第二版開始參與的合著者)。本書的最大特點就是將嚴謹性和全面性融入在了一起。
http://ke..com/link?url=-
大學教的數據結構和演算法基本上面都有,我就作為參考書
Ⅸ 計算機有哪些必讀的經典書籍
計算機專業學習的過程中,大家學習了程序語言C/C++、數據結構、資料庫、計算機組成原理、操作系統和計算機網路等基礎課,但是還有許多經典書籍值得我們一讀,閱讀這些書籍不但對我們個人能力提升而且對個人應聘找工作都有很大的幫助。下面羅列出一些經典書籍供大家參考。
1. 程序語言方面
C語言作為最經典的語言,也是計算機專業最先學習的一門語言。首先推薦幾本C語言經典書籍:
《C和指針》
《C缺陷與陷阱》
《C專家編程》
《C語言深度剖析》
Expert C Programming
其中《C專家編程》從C的歷史、語言特性、聲明、數組指針、鏈接、運行時內存等問題進行了細致的講解和深入的分析,全書展示出很多優秀的編碼技巧,特別適合有一點C語言基礎的人觀看。《C語言深度剖析》是國內寫的一本書,重點講解了C語言里的一些晦澀難度的問題。
C++語言經典書籍:
《C++ Primer 5th》
《Effective C++》
《深度探索C++對象模型》
《STL源碼解析》
C++ Primer
以上幾本是學好C++必讀的書籍,《C++ Primer 5th》由淺入深全面的講解了C++的語法與程序設計,是C++程序員必讀的一本書,《深度探索C++對象模型》對C++運行原理作了一個很好的剖析,詳細的講解了對象內存模型以及調用運行的本質,對深入理解C++內部機制來說是一本非常好的書籍。計算機底層書籍:
《編碼》
《編譯原理》
《匯編語言》
《C++反匯編與逆向分析》
Code
《編碼》深度形象的講解了計算機的原理,看完此書後你會對計算機的工作原理有較深刻的理解,強烈推薦大家看一看。
2. 演算法、數據結構相關
《演算法導論》
《編程珠璣》
《編程之美》
《演算法藝術與信息學競賽》
《演算法導論》是演算法領域的聖經,這本書很厚並且理論知識較強,很難從頭到尾認真的看一遍,大家可以選擇性地看,當然能完整的看完就更好了。《編程珠璣》和《編程之美》這兩本書也非常經典,裡面注重的是解決問題的思路,看的時候要認真思考裡面的問題。最後一本是關於ACM方面的書,如果自己能力足夠強的話,看看這本書也還是挺不錯的
LeetCode 中國
當然,這里不得不向大家推薦的就是 LeetCode 在線技術平台了,專注於做演算法、學習、求職和計算機科學相關的內容,被譽為計算機界的刷題神器。目前,LeetCode 也已經進入中國,有自己的中文網站( leetcode-cn ),不僅提供了 LeetCode 的全部服務,還有中英文題目對照和中文社區,總算可以愉快的刷題了。
3. 操作系統相關
《深入理解操作系統》
《linux內核完全注釋》
《自己動手寫操作系統》
《Windows內核原理與實現》
Linux內核完全注釋
《Linux內核完全注釋》一書選取了代碼量不超過2萬行的linux 0.11內核,對內核代碼的每一個細節都作出了詳細的講解,麻雀雖小,五臟俱全,看完這本書對linux操作原理會有一個很深的理解,是國內一本非常優秀的書。
4. 軟體開發、設計相關
《Head First 設計模式》
《設計模式-可復用面向對象軟體的基礎》
《重構與模式》
《代碼大全》
《設計模式》(GOF)
Head First - 設計模式
設計模式在工作中重要性尤其突出,良好的軟體設計對於後期的維護、擴展有著重要的作用,對於大型軟體,首先要做的就是設計好整個軟體架構,這也是整個軟體開發過程中最難的一個環節。
5. 資料庫
《資料庫系統概念》
《資料庫系統實現》
《MySQL技術內幕:sql編程》
《MySQL技術內幕: InnoDB存儲引擎》