前言
登場角色介紹
第1章什麼是演算法
1料理的食譜是演算法
2演算法是先人的智慧
3知道演算法就像是玩遊戲變厲害一樣
4演算法必須具備「有效性」和「停止性」
5演算法有許多種類
COLUMN成為演算法基礎的結構化編程思維
第2章變數與陣列
6數據就是各式各樣的資料
7所有的數據都有特定型態
8數值或文字等的具體表現,就是「值」
9裝有值的箱子,就是「變數」
10利用「變數識別符」的名稱區分變數
11指派陳述式具有把值代入變數的功能
12變數之間的代入,是把變數中原有的值儲存成其它變數
13變數也有資料類型
14相同資料類型的連續,就是陣列
15利用「數組標誌符」的名稱區分陣列
16運用元素編碼辨識陣列的各元素
17陣列,是有效率地收納相關資料的置物櫃
18二維陣列,就是類似旅館房間那樣的東西
19用2個後標辨識陣列的各元素
20字元串,就是字元數據類型的陣列
21字元串的字元長,是透過字元長變數或「臨界值」管理
COLUMN一般慣用的變數識別符
第3章數據資料結構
022 能有效管理大量數據資料的構造,就是資料結構
023 資料結構有許多種類
024 如同堆疊書本般的資料結構,就是「堆疊」
025 如同依序排隊結帳般的資料結構,就是「佇列」
026 如同用繩子相連般管理資料的,就是「鏈結串列」
027 從單一方向循著數據資料往前進的,就是「單向鏈結串列」
028 從兩端循著數據資料往前進的,就是「雙向鏈結串列」
029 查看第N項元素時,速度較快的是「陣列」,較慢的是「鏈結串列結構」
030 數據的插入.刪除較快的是「鏈結串列結構」,較慢的是「陣列」
031 抵達結尾時會再返回開頭的,是「環狀緩衝區」
032 呈現出父1名、子2名結構的是「二元樹」
033 父節點的鍵值經常不大於子節點鍵值的二元樹,就是「堆積」
034 雜湊表,是組合了陣列和鏈結串列的資料結構
035 運用節點和邊,把項目連結以圖像表示的是「圖」
第4章 基礎演算法
036 求1~N的總和值時,進行反覆處理
037 若要維持數列的值,則必須要使用陣列
038 求陣列數據內的總和值時,需準備加上總和值的變數
039 求陣列數據的有效元素數量時,需準備COUNT
040 陣列數據的平均,以反覆處理求出總和值和個數計算
041 求陣列數據內的最大值時,需準備維持最大值的變數
042 求陣列數據內的最小值時,需準備維持最小值的變數
043 編排陣列數據的順位時,需另外準備一個收納順位的陣列
044 比較時間大小時,把單位全部換算成秒
045 求時間差時以秒為單位,求出差之後再恢復成時間表示
046 要替換2項變數的值,可利用暫時性的工作階段變數
第5章 排序及檢索
048 排序,是讓對象依循特定規則進行排列的行為
049 排序演算法有各種樣式
050 在其它陣列(桶子)收納數據進行排列的「桶子排序法」
051 從數字的低位位數依序重複桶子排序法的「基數排序法」
052 選擇最小值(最大值),和排序完成的數據結尾交換的「選擇排序法」
053 交換相鄰數據的「交換排序法」
054 排列完成部分把數據插入大小關係正確位置的「插入排序法」
055 把數列按一定間距分組排列的「希爾排序法」
056 使複數排列完成的數列合體的是「合併」
057 利用合併演算法進行排列的「合併排序法」
058 利用和基準數據的大小關係,把數列2等分的「快速排序法」
059 利用堆積結構執行排列操作的「堆積排序法」
060 搜尋(檢索),是從複數數據中找出目的數據的行為
061 從頭開始一個不漏地比較數據的「循序搜尋法」
062 從排列完成的數列快速地搜尋出數據的「二分搜尋法」
063 在賦予的字元串中,尋找指定部分字元串位置的「字元串搜尋法」
064 從不一致字元位置和部分字元串的構成有效地搜尋字元的KMP法
065 從部分字元串的尾端往開頭方向比對字元的BM法
第6章 其它的演算法
066 藉由活用微分來尋求高次方程式的解的是「牛頓法」
067 求聯立方程式的解,是「高斯消去法」
068 利用增加梯形面積,來求定積分之值的方法是「梯形法」
069 求最短時間、最短距離等最佳路徑的方法是,利用圖表
的「戴克斯特拉演算法」
070 判定自然數n是否是質數的「埃拉托斯特尼篩選方法」
071 利用遞迴呼叫求n的階乘
第7章 演算法的複雜度
072 演算法的複雜度方面,有「時間複雜度」和「空間複雜度」
073 時間複雜度,會以「演算」「條件比較」「代入處理」等的操作次數計算
074 演算法的計算量用「大O符號」表示