零負擔理解演算法設計技巧
零程式基礎也能快速上手
採網頁前端開發工具JavaScript實作程式
一本輕量級演算法,是您獲得程式設計新技能,提升自我價值的最好投資
當「寫程式」納入必修課程的重要趨勢下,APP開發或網頁程式設計已是大部份學生或社會人士必須具備的基礎能力。演算法是用來培養程式設計邏輯的基礎理論,也是有志從事資訊工作的專業人員,不得不重視的一門基礎課程。
為了讓讀者能以容易理解的方式吸收演算法與基礎資料結構的相關知識,全書使用簡明的圖例介紹最常用演算法的概念,包括:分治法、遞迴法、貪心法、動態規劃法、疊代法、枚舉法、回溯法,並實作許多經典案例,如:字串反轉(String Reversal)、迴文(Palindrome)、整數反轉(Integer Reversal)、判斷兩字是否相同(Anagrams)、金字塔圖形外觀(Pyramid)…等等。同時應用不同演算法延伸出重要資料結構,例如:陣列、鏈結串列、堆疊、佇列、樹狀結構、排序、搜尋、雜湊…等,搭配這幾年快速竄紅的JavaScript程式語言舉例實作,是您入門演算法的最佳首選。
本書特色
✔演算法最佳首選:配合實作程式碼,將各種演算法應用在程式設計的領域
✔強化程式設計邏輯:豐富圖例闡述基礎,將演算法做最簡明的詮釋及舉例
✔完善科學領域議題:加入實戰安全性演算法與人工智慧的相關演算法
✔驗收學習成果:設計難易適中的習題,並參閱國家考試題型,提供進一步演練
目錄
【PART I 運算思維與演算法】
Chapter 01 大話運算思維與程式設計
1-1 大話運算思維
1-2 運算思維的腦力大賽
1-3 生活中到處都是演算法
Chapter 02 地表上最常見經典演算法
2-1 分治演算法
2-2 遞迴演算法
2-3 給我最好,其餘免談的貪心法
2-4 分治法的麻吉兄弟-動態規劃演算法
2-5 不斷繞圈的疊代演算法
2-6 人人都有份的枚舉演算法
2-7 不對就回頭的回溯法
Chapter 03 經典演算法案例
3-1 字串反轉(String Reversal)
3-2 迴文(Palindrome)
3-3 整數反轉(Integer Reversal)
3-4 最常出現的字母(Max Character)
3-5 判斷兩字是否相同(Anagrams)
3-6 反向陣列(Reverse Array)
3-7 將句中或片語單字反轉(Reverse Words)
3-8 首字大寫(Capitalization)
3-9 平均值(Mean)
3-10 回傳給定總和的數值序對(Two Sum)
3-11 最大利潤(Max Profit)
3-12 費伯那序列(Fibonacci)
3-13 記憶式費伯那序列(Memoized Fibonacci)
3-14 階梯狀圖形外觀(Staircase)
3-15 金字塔圖形外觀(Pyramid)
【PART II 資料結構相關演算法】
Chapter 04 走入資料結構的異想世界
4-1 資料結構初體驗
4-2 超人氣的資料結構型態
4-3 盤根錯節的樹狀結構
4-4 學會藏寶圖的密技-圖形簡介
4-5 神奇有趣的雜湊表
Chapter 05 全方位應用的陣列與串列演算法
5-1 矩陣演算法與深度學習
5-2 陣列與多項式
5-3 徹底玩轉單向串列演算法
Chapter 06 堆疊與佇列演算法徹底研究
6-1 陣列實作堆疊輕鬆學
6-2 鏈結串列實作堆疊
6-3 古老的河內塔演算法
6-4 八皇后演算法
6-5 陣列實作佇列
6-6 鏈結串列實作佇列
6-7 有趣的雙向佇列
6-8 一定要懂得優先佇列
【PART III 排序與搜尋演算法】
Chapter 07 新手快速學會的排序演算法
7-1 看懂排序
7-2 氣泡排序法
7-3 選擇排序法
7-4 插入排序法
7-5 謝耳排序法
7-6 合併排序法
7-7 快速排序法
7-8 基數排序法
Chapter 08 打造快速體驗的搜尋心法
8-1 循序搜尋法
8-2 二分搜尋法
8-3 內插搜尋法
8-4 費氏搜尋法
【PART IV 樹與圖的演算法】
Chapter 09 超圖解的樹狀演算法
9-1 陣列實作二元樹
9-2 鏈結串列實作二元樹
9-3 二元樹走訪的入門捷徑
9-4 二元樹節點搜尋
9-5 二元樹節點插入
9-6 二元樹節點的刪除
9-7 堆積樹排序法
9-8 延伸二元樹入門
9-9 霍夫曼樹特訓班
9-10 平衡樹
9-11 決策樹的智慧
Chapter 10 圖形演算法的關鍵課程
10-1 圖形簡介
10-2 不能不學的圖形表示法
10-3 圖形走訪的訣竅
10-4 擴張樹的密碼
10-5 圖形最短路徑演算法
【PART V 現代議題演算法】
Chapter 11 完美實戰安全性演算法
11-1 輕鬆學會資料加密
11-2 一學就懂的雜湊演算法
11-3 破解碰撞與溢位處理
Chapter 12 人工智慧演算法
12-1 機器學習簡介
12-2 認識深度學習
Appendix A 開發環境與JavaScript快速入門
A-1 JavaScript執行環境
A-2 選擇程式的文字編輯器
A-3 基本資料處理
A-4 變數宣告與資料型別轉換
A-5 輸出與輸入指令
A-6 運算子與運算式
A-7 流程控制
A-8 陣列宣告與實作
A-9 函式定義與呼叫
A-10 物件的屬性與方法