★★★用手機掃描書中 QR Code 立即觀看演算法動畫!★★★
? 一圖一步驟,帶你打開演算法的黑箱!
? 全彩超圖解,將抽象的演算法視覺化!
? 內容淺顯易懂,沒有長篇難懂的理論!
「演算法」給人的第一印象就是好難學、理論好多,即使讀完千字文還是看不懂!o(〒﹏〒)o
沒錯!小編非常有同感,第一次接觸演算法時,就被「時間複雜度」弄得暈頭轉向,我一點也不想知道這些數學式是怎麼推導的啊,只要知道哪個演算法比較快、比較好用就可以了!還有,常遇到同一個詞有不同說法,在 Google 搜尋時就會搞不清楚是不是指同一件事,例如 Binary Tree Traversal,就有「二元樹追蹤、二元樹訪問、二元樹走訪、二元樹遍歷……」,這麼多種稱呼,實在讓人困惑!
透過本書一圖一步驟地拆解演算法的背後原理,我終於弄懂演算法的運作了,其實演算法沒有想像中那樣神秘、可怕,而是有規則可循的。看懂其運作原理後,由衷佩服這些設計演算法的人,原來他們是這樣思考與拆解問題的啊,我怎麼都沒想到呢!舉個簡單的例子,要找出陣列中的最小值,只要準備一個陣列,跟一個用來儲存最小值的變數,並將此變數一開始先設成「無限大」,接著再跟陣列中的數值一一比對,就可以找出陣列中的最小值了 (原來關鍵在設成「無限大」,我壓根兒沒想過可以這樣設定)!看到這裡,或許你也開始放空了,沒關係!只要翻開本書跟著圖解一步步思考,並搭配動畫的展示,就可以理解演算法的運作了!
本書收錄許多知名的演算法與資料結構,其中有些演算法已經被主流的程式語言編寫成方便使用的「函式庫」。不過「函式庫」是一種將工作原理藏在內部的「黑箱」,因此大多數人在使用時不見得對演算法有充分的理解。想要寫出執行效能佳的程式,得確實理解演算法的工作原理才行。
本書介紹的資料結構與演算法
?陣列的查詢:
互換元素�尋找最大值�互換排序�合計�最小元素值�最小元素位置�線性搜尋法�二元搜尋法
?排序:
反轉�插入�合併�分割�氣泡排序法�選擇排序法�插入排序法�合併排序法�快速排序法�堆積排序法�計數排序法�希爾排序法
?與整數相關的演算法:
埃拉托斯特尼篩法�輾轉相除法
?資料結構:
堆疊�佇列�雙向鏈結串列�雜湊表
?陣列的計算:
累積和�一維累積和的應用�二維累積和的應用
?堆積:
Up Heap�Down Heap�建立堆積�優先佇列
?二元樹的走訪:
前序走訪�後序走訪�中序走訪�層序走訪
?其他:
廣度優先搜尋�卡恩演算法�深度優先搜尋�Tarjan 演算法�Union By Rank�Union-Find Tree�普林演算法�克魯斯克爾演算法�戴克斯特拉演算法�貝爾曼 - 福特演算法�弗洛伊德演算法�包裹法�葛立恆掃描法�安德魯演算法�線段樹:RMQ�線段樹:RSQ�二元搜尋樹�旋轉�樹堆……
本書特色
★ 觀看【演算法動畫】同時搭配書中的原理說明,讓學習效果翻倍!
★ 收錄【61 個經典的演算法+資料結構】,讓你活化思維並提升邏輯思考力!
★ 【豐富的圖解及圖示設計】將抽象的演算法視覺化,易讀易學好吸收!
★ 逐步拆解演算法的運作原理、解析執行效率及優缺點,突破盲點、顛覆思考。
★ 沒有難懂的數學推導及長篇理論說明,降低學習門檻!