
傑伊·溫格羅
本書是數據結構與算法的入門指南,不侷限於某種特定語言,略過複雜的數學公式,用通俗易懂的方式針對編程初學者介紹數據結構與算法的基本概念,培養讀者編程邏輯。主要內容包括:爲什麼要了解數據結構與算法,大O表示法及其代碼優化利用,棧、隊列等的合理使用,等等。
書中從爲什麼要了解數據結構與算法開始,爲我們揭示了數據結構與算法在編程中的重要性。接着,作者通過大O表示法及其代碼優化利用,讓我們明白了算法的效率是如何被衡量的。而棧、隊列等常見數據結構的合理使用,更是讓我們在編程實踐中能夠遊刃有餘。 值得一提的是,這本書的插圖非常豐富,每一個概念都配有相應的圖解,使得我們能夠更加直觀地理解。這種圖文並茂的方式,不僅增加了閱讀的趣味性,也大大提高了我們的學習效率。 此外,書中還涵蓋了許多經典算法的實現和比較,如插入排序、選擇排序、冒泡排序等。這些算法的實現過程都被作者詳細地描述出來,並且配有相應的代碼示例。這使得我們能夠更加深入地理解算法的實現原理,也爲我們日後編寫高效的程序打下了堅實的基礎。 總的來說,《數據結構與算法圖解》是一本非常適合編程初學者入門的數據結構與算法書籍。它不僅內容豐富、講解詳細,而且非常注重實際應用。如果你想要深入學習數據結構與算法,那麼這本書絕對是一個不可多得的好選擇。
《數據結構與算法圖解》深入淺出的介紹了一些常用的算法和數據結構。這兩者本質都是爲了解決問題而定義的。 數據結構是爲了解決問題而定義的計算機存儲數據的結構。算法則是解決問題的步驟,設計不同的算法則是爲了更好的解決問題。 如何判斷能否更好的解決問題?提出了空間複雜度和時間複雜度。大部分時候,我們更關心時間複雜度,也就是性能,只有在比如嵌入式環境,內存非常少的時候,更加關注空間複雜度。 本書提到的,算法包括經典的查找、排序、最短路徑。 數據結構包括低層次的數組、鏈表,高層次的棧、隊列、二叉樹、哈希、圖等。 查找最快的數據結構是哈希,是常數時間複雜度。其次,二叉樹是對數時間複雜度。其他數組鏈表等都是線性時間複雜度。當然,有序數組除外,有二分查找法,是對數複雜度。 排序則更經典,有多種排序算法,冒泡、選擇、插入、快速排序,還有裏面沒提到的堆排序和歸併排序,冒泡、選擇、插入都是平方時間複雜度,其他的是nlogn。 最短路徑,本書提到一種,用圖做數據結構,採用dijkstra最短路徑法,就是每次尋找當前路徑最短的節點,以此爲基礎,遍歷所有的節點,就得到所有節點最短的路徑。 本書符合作者的提出的智慧,即,任何複雜高深的問題,其實都是由簡單的概念組成的,沒有任何數學公式,描述問題淺顯易懂,非常值得一看!特別是舉的例子,非常詳細,看的時候不費力氣,看完再把其中提到的算法和數據結構都實操一遍,基本都掌握了。
希望你能通過本書明白一個道理:很多看似複雜、深奧的事物,其實都是由你所掌握的簡單概念構築而成的。不要因爲某些資料沒解釋到位,就以爲它很困難而被嚇退,你一定能找到更詳盡的解釋資料。來自作者。 推薦一下
《數據結構與算法圖解》,數據結構與算法可以說是計算機的靈魂,大道至簡,作者很好的詮釋了這一點。 這本書作很適合作爲算法的入門手冊,將大O作爲衡量算法的時間複雜度的標準,以數據結構爲始,數組、棧、隊列、散列表、鏈表、二叉樹、圖,層層推進,把每一步的實現過程都講得明明白白,正如文末說言:“很多看似複雜、深奧的事物,其實都是由你所掌握的簡單概念構築而成的。不要因爲某些資料沒解釋到位,就以爲它很困難而被嚇退,你一定能找到更詳盡的解釋資料”。
哇第一次看完一本數據結構與算法的書 之前一直想補上數據結構的知識來着,奈何學校的教材看起來都太多太枯燥了,這本書剛剛合適,篇幅不長,並且講得簡單,通俗易懂。有關數據結構與算法的基礎知識我還是需要惡補的呀,繼續加油吧~
簡單的就是最好的。 本書由淺入深地講解了常見算法及分析方法和思路,結合了案例來說明算法的趣味性,無論是臉書和推特,還是領英的例子,再到JavaScript語法分析器的部分功能,都在說明算法在我們日常生活中是多麼常見。適合初學數據結構和算法的小夥伴,同樣能給有經驗的程序員一些啓發,無論是算法方面,還是技術講解博文寫作方面。 遺憾的是,沒提到算法的重要組成動態規劃。 有人可能會評論這本書內容是給小學生看的,正如奧坎姆剃刀法則講,”簡單的就是最好的“,用最簡單清晰的語言將那些複雜概念表達出來,讓別人都能理解,是費曼技巧的核心。反觀,“給小學生看的書”有如此評價的人如果讓他編寫算法教材,可能會編寫一堆術語,一堆證明堆積而成連自己都不知道在講什麼的書。也就是簡單的概念複雜化的磚家。
數據結構與算法並不只是抽象的概念,掌握好的話可以寫出更高效、運行得更快的代碼,這對於如今盛行的網頁和移動應用開發來說尤爲重要。如果你最近一次使用算法是在大學課堂上或求職面試時,那你應該還沒見識到它的真正威力。 這個主題的大多數資料都有一種通病——晦澀難懂。滿紙的數學術語,搞得除非你是數學家,不然真不知道作者在說什麼。即使是一些聲稱“簡化”過的書,看起來也好像已經認定讀者都掌握了高深的數學知識。這就導致了很多人對此主題望而生畏,以爲自己的智商不足以理解這些概念。 但事實上,數據結構與算法都是能夠從常識推導出來的。數學符號只是一種特定的語言,數學裏的一切都是可以用常識去解釋的。本書用到的數學知識就只有加減乘除和指數,所有的概念都可以用文字來解釋。我還會採用大量的圖表以便讀者輕鬆地理解。 一旦掌握了這些知識,你就能寫出高效、快速、優雅的代碼。你還能權衡各種寫法的優劣,並能合理判斷適用於給定情況的最優方案。
花了5 h左右閱畢全書,幸福感洋溢全身。目前這是第一本一口氣讀完的算法類書籍(分了兩天半看),不得不說這本書饒有趣味,深入淺出,尤其是對圖的解釋,入木三分,卻不減讓人如沐春風之感。 很感謝作者陪伴我這一場有趣的旅行! 人生算法的造詣,何嘗不是在時間和空間複雜度中尋求更好與最優的平衡呢?
十分淺顯易懂,顯然十分新手友好,但是也只是說了關於數據結構與算法的基本內容,還有很多算法沒提到,需要我們自己去補充額外的知識。但不管怎樣,還是爲新手提供了良好的基本知識。
容我將本書寫在最後的話分享在前面。“我希望你能通過本書明白一個道理:很多看似複雜、深奧的事物,其實都是由你所掌握的簡單概念構築而成的。不要因爲某些資料沒解釋到位,就以爲它很困難而被嚇退,你一定能找到更詳盡的解釋資料。” 本書語言幽默風趣,知識講解深入淺出,學完以後不一定會成爲數據算法大師,但一定能掃清我們一探數據算法的障礙。 一本好書會讓人不忍釋卷,一讀再讀。本書的魅力就在於它不僅讓我們學習新知,還能提升自我認知,甚至勝過了很多專門的個人成長書藉。