⦿ 一圖一步驟,帶你打開演算法的黑箱!
⦿ 全彩超圖解,將抽象的演算法視覺化!
⦿ 內容淺顯易懂,沒有長篇難懂的理論!
「演算法」給人的第一印象就是好難學、理論好多,即使讀完千字文還是看不懂!o(〒﹏〒)o
沒錯!小編非常有同感,第一次接觸演算法時,就被「時間複雜度」弄得暈頭轉向,我一點也不想知道這些數學式是怎麼推導的啊,只要知道哪個演算法比較快、比較好用就可以了!還有,常遇到同一個詞有不同說法,在 Google 搜尋時就會搞不清楚是不是指同一件事,例如 Binary Tree Traversal,就有「二元樹追蹤、二元樹訪問、二元樹走訪、二元樹遍歷……」,這麼多種稱呼,實在讓人困惑!所以本書的專有名詞除了標示中文外,也會加上英文,以便讀者查詢更多資訊。
透過本書一圖一步驟地拆解演算法背後的原理,我終於弄懂演算法的運作了,其實演算法沒有想像中那樣神秘、可怕,而是有規則可循的。看懂其運作原理後,由衷佩服這些設計演算法的人,原來他們是這樣思考與拆解問題的啊,我怎麼都沒想到呢!
本書收錄許多知名的演算法與資料結構,其中有些演算法已經被主流的程式語言編寫成方便使用的「函式庫」。不過「函式庫」是一種將工作原理藏在內部的「黑箱」,因此大多數人在使用時不見得對演算法有充分的理解。想要寫出執行效能佳的程式,得確實理解演算法的工作原理才行。
本書介紹的資料結構與演算法
✪陣列的查詢:
互換元素/尋找最大值/互換排序/合計/最小元素值/最小元素位置/線性搜尋法/二元搜尋法
✪排序:
反轉/插入/合併/分割/氣泡排序法/選擇排序法/插入排序法/合併排序法/快速排序法/堆積排序法/計數排序法/希爾排序法
✪與整數相關的演算法:
埃拉托斯特尼篩法/輾轉相除法
✪資料結構:
堆疊/佇列/雙向鏈結串列/雜湊表
✪陣列的計算:
累積和/一維累積和的應用/二維累積和的應用
✪堆積:
Up Heap/Down Heap/建立堆積/優先佇列
✪二元樹的走訪:
前序走訪/後序走訪/中序走訪/層序走訪
✪其他:
廣度優先搜尋/卡恩演算法/深度優先搜尋/Tarjan 演算法/Union By Rank/Union-Find Tree/普林演算法/克魯斯克爾演算法/戴克斯特拉演算法/貝爾曼 - 福特演算法/弗洛伊德演算法/包裹法/葛立恆掃描法/安德魯演算法/線段樹:RMQ/線段樹:RSQ/二元搜尋樹/旋轉/樹堆……