認識程式設計的基礎
寫給初學者的「演算法」入門書
詳細介紹變數&陣列,以及資料結構,收錄程式設計上必備的『各種演算法』!
發明於20世紀的電腦以飛躍般的姿態發展,在21世紀的現在,已被應用於手機、電視、數位相機、遊戲機等生活用品之中。甚至自動驗票機、ATM終端機的控制、顧客管理、財務管理等,各種企業的業務也都仰賴電腦輔助。這些電腦都是由程式進行運作。本書將以電腦運作為前提,介紹編寫出絕佳程式前應該要學習的「演算法」相關基礎。
期待讀者可以藉由本書,理解電腦程式設計的特有思考模式。
【本書特色】
深入淺出的解說,適合普羅大眾閱讀
搭配彩色圖解與生動比喻,專業知識輕鬆學
從「何謂演算法、何謂程式」為起始,到排序及檢索、測量演算法效率、其它演算法……均有詳細解說,內容涵蓋基礎到專業知識。
作者簡介:
杉浦 賢 Ken Sugiura
曾任職於System Road(有限会社システム・ロード)負責個人電腦控制等相關企劃製作。目前獨立開業,主要利用C、C++、C#、VB.NET語言,開發應用於Windows的軟體。亦擔任軟體公司的新人訓練講師及電腦職業學校的兼任講師,
著有『圖解瞭解演算法的基本及構造』﹝『図解でわかるアルゴリズムの基本と仕組み』(秀和システム)﹞等書。
目錄
前言 3
登場角色介紹 8
第1章 什麼是演算法 9
001 料理的食譜是演算法 10
002 演算法是先人的智慧 12
003 知道演算法就像是玩遊戲變厲害一樣 14
004 演算法必須具備「有效性」和「停止性」 16
005 演算法有許多種類 18
COLUMN 成為演算法基礎的結構化編程思維 20
第2章 變數與陣列 21
006 數據就是各式各樣的資料 22
007 所有的數據都有特定型態 24
008 數值或文字等的具體表現,就是「值」 26
009 裝有值的箱子,就是「變數」 28
010 利用「變數識別符」的名稱區分變數 30
011 指派陳述式具有把值代入變數的功能 32
012 變數之間的代入,是把變數中原有的値儲存成其它變數 34
013 變數也有資料類型 36
014 相同資料類型的連續,就是陣列 38
015 利用「數組標誌符」的名稱區分陣列 40
016 運用元素編碼辨識陣列的各元素 42
017 陣列,是有效率地收納相關資料的置物櫃 44
018 二維陣列,就是類似旅館房間那樣的東西 46
019 用2個後標辨識陣列的各元素 48
020 字元串,就是字元數據類型的陣列 50
021 字元串的字元長,是透過字元長變數或「臨界值」管理 52
COLUMN 一般慣用的變數識別符 54
第3章 數據資料結構 55
022 能有效管理大量數據資料的構造,就是資料結構 56
023 資料結構有許多種類 58
024 如同堆疊書本般的資料結構,就是「堆疊」 60
025 如同依序排隊結帳般的資料結構,就是「佇列」 62
026 如同用繩子相連般管理資料的,就是「鏈結串列」 64
027 從單一方向循著數據資料往前進的,就是「單向鏈結串列」 66
028 從兩端循著數據資料往前進的,就是「雙向鏈結串列」 68
029 查看第N項元素時,速度較快的是「陣列」,較慢的是「鏈結串列結構」 70
030 數據的插入‧ 刪除較快的是「鏈結串列結構」,較慢的是「陣列」 72
031 抵達結尾時會再返回開頭的,是「環狀緩衝區」 74
032 呈現出父1名、子2名結構的是「二元樹」 76
033 父節點的鍵值經常不大於子節點鍵值的二元樹,就是「堆積」 78
034 雜湊表,是組合了陣列和鏈結串列的資料結構 80
035 運用節點和邊,把項目連結以圖像表示的是「圖」 82
第4章 基礎演算法
036 求1∼N的總和值時,進行反覆處理 86
037 若要維持數列的值,則必須要使用陣列 88
038 求陣列數據內的總和值時,需準備加上總和值的變數 90
039 求陣列數據的有效元素數量時,需準備COUNT 92
040 陣列數據的平均,以反覆處理求出總和值和個數計算 94
041 求陣列數據內的最大值時,需準備維持最大值的變數 96
042 求陣列數據內的最小值時,需準備維持最小值的變數 98
043 編排陣列數據的順位時,需另外準備一個收納順位的陣列 100
044 比較時間大小時,把單位全部換算成秒 102
045 求時間差時以秒為單位,求出差之後再恢復成時間表示 104
046 要替換2項變數的值,可利用暫時性的工作階段變數 106
第5章 排序及檢索
048 排序,是讓對象依循特定規則進行排列的行為 112
049 排序演算法有各種樣式 114
050 在其它陣列(桶子)收納數據進行排列的「桶子排序法」 116
051 從數字的低位位數依序重複桶子排序法的「基數排序法」 118
052 選擇最小值(最大值),和排序完成的數據結尾交換的「選擇排序法」 120
053 交換相鄰數據的「交換排序法」 122
054 排列完成部分把數據插入大小關係正確位置的「插入排序法」 124
055 把數列按一定間距分組排列的「希爾排序法」 126
056 使複數排列完成的數列合體的是「合併」 128
057 利用合併演算法進行排列的「合併排序法」 130
058 利用和基準數據的大小關係,把數列2等分的「快速排序法」 132
059 利用堆積結構執行排列操作的「堆積排序法」 134
060 搜尋(檢索),是從複數數據中找出目的數據的行為 136
061 從頭開始一個不漏地比較數據的「循序搜尋法」 138
062 從排列完成的數列快速地搜尋出數據的「二分搜尋法」 140
063 在賦予的字元串中,尋找指定部分字元串位置的「字元串搜尋法」 142
064 從不一致字元位置和部分字元串的構成有效地搜尋字元的KMP法 144
065 從部分字元串的尾端往開頭方向比對字元的BM法 146
第6章 其它的演算法
066 藉由活用微分來尋求高次方程式的解的是「牛頓法」 150
067 求聯立方程式的解,是「高斯消去法」 152
068 利用增加梯形面積,來求定積分之值的方法是「梯形法」 1547
069 求最短時間、最短距離等最佳路徑的方法是,利用圖表
的「戴克斯特拉演算法」 156
070 判定自然數n是否是質數的「埃拉托斯特尼篩選方法」 158
071 利用遞迴呼叫求n的階乘 160
第7章 演算法的複雜度
072 演算法的複雜度方面,有「時間複雜度」和「空間複雜度」 164
073 時間複雜度,會以「演算」「條件比較」「代入處理」等的操作次數計算 166
074 演算法的計算量用「大O符號」表示 168
前言 3
登場角色介紹 8
第1章 什麼是演算法 9
001 料理的食譜是演算法 10
002 演算法是先人的智慧 12
003 知道演算法就像是玩遊戲變厲害一樣 14
004 演算法必須具備「有效性」和「停止性」 16
005 演算法有許多種類 18
COLUMN 成為演算法基礎的結構化編程思維 20
第2章 變數與陣列 21
006 數據就是各式各樣的資料 22
007 所有的數據都有特定型態 24
008 數值或文字等的具體表現,就是「值」 26
009 裝有值的箱子,就是「變數」 28
010 利用「變數識別符」的名稱區分變數 30
011 指派陳述式具有把值代入變數的功能 32
01...
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。