商品參數
程序語言的奧妙:算法解讀 |
| 曾用價 | 45.00 |
齣版社 | 科學齣版社 |
版次 | 1 |
齣版時間 | 2012年07月 |
開本 | 32 |
作者 | (日)杉浦賢 |
裝幀 | 平裝 |
頁數 | 162 |
字數 | 175000 |
ISBN編碼 | 9787030346377 |
目錄
目錄
第1章 什麼是算法?
001 烹飪用的食譜就是算法 002
002 算法是古老的智慧 004
003 懂得瞭算法遊戲水平會更高 006
004 算法必須滿足“有效性”和“終止性” 008
005 算法有很多種類 010
COLUMN 算法的基礎—結構化程序設計的思想 012
第2章 變量和數組
006 數據是各種各樣的信息 014
007 所有的數據都有類型 016
008 值是數值、文字等的具體錶現 018
009 變量是放入值的箱子 020
010 變量通過“變量名”區彆 022
011 賦值語句有給變量賦值的能力 024
012 變量到變量的代入,是一個變量中的值被存儲在另一個變量中 026
013 變量也有數據類型 028
014 連續排列的相同數據類型的元素集閤稱為數組 030
015 數組用“數組名”區分 032
016 數組的各元素用元素編號辨彆 034
017 數組是有效存儲相關聯數據的儲物櫃 036
018 二維數組類似賓館的房間 038
019 數組的各元素通過兩個下標標識 040
020 字符串是字符數據的數組 042
021 字符串的字符長度由字符長度變量或“哨兵”管理 044
COLUMN 常用的變量名 046
第3章 數據結構
022 實現對大量數據進行高效管理—數據構造 048
023 數據結構有很多種 050
024 如同嚮上堆書一樣的數據結構是棧 052
025 在收銀颱排隊一樣的數據結構是等待隊列 054
026 用繩子把數據連起來的數據管理方式—鏈錶 056
027 單嚮鏈錶:從一端開始可以遍曆所有數據 058
028 雙嚮鏈錶:從雙嚮開始都可以遍曆所有數據 060
029 查找第N 個元素時數組比較快,鏈錶比較慢 062
030 插入和刪除數據時鏈錶比較快,數組比較慢 064
031 環形緩衝:一旦到達末尾即返迴到開頭 066
032 二叉樹:一個父結點兩個子結點組成的結構 068
033 堆:父結點的值不得比子結點的值大的二叉樹 070
034 哈希錶:數組和鏈錶組閤的一種數據結構 072
035 圖:結點和邊連接的形式 074
COLUMN 從0開始還是從1開始? 076
第4章 基本的算法 077
036 執行循環操作求1~N的和 078
037 使用數組保存數列的值 080
038 用變量求數組元素值的和 082
039 用計數器求數組的有效元素數 084
040 根據數組的各元素和以及元素個數求數組的平均值 086
041 求數組元素的*大值要使用保存*大值的變量 088
042 使用變量保存*小值求數組的*小值 090
043 使用其他的數組存放數組元素的順序 092
044 以秒為單位的時間大小的比較 094
045 求時間差時,將差再錶示成時間形式 096
046 利用臨時變量交換兩個變量的值 098
047 用歐幾裏得相除法求2個數的*大公約數 100
COLUMN 代碼和數據存在哪裏? 102
第5章 排序和搜索 103
048 排序是指按照一定規則對元素對象進行排列擺放 104
049 多種多樣的排序算法 106
050 把數據放於其他數組(桶)來進行排序的“桶排序” 108
051 從數值的低位開始依次重復桶排序的“基數排序” 110
052 選擇*小值(*大值)與排好序的末位交換的“簡單選擇法” 112
053 相鄰數據交換的“簡單交換法”(冒泡排序) 114
054 在已排序數據的正確位置插入數據的“簡單插入法” 116
055 把數據列按照一定間隔分組而進行排序的“希爾排序” 118
056 把多個排序結果的數列閤在一起的“閤並”(歸並) 120
057 利用歸並的算法進行排序的歸並排序 122
058 通過與基準數據比較大小並把數列進行二分的“快速排序” 124
059 利用堆的構造進行排序的“堆排序” 126
060 搜索是從多個數據中找齣目標數據 128
061 從首位元素開始逐個進行比較處理的“綫性查找” 130
062 能夠從排好序的數列中快速找齣數據的“二分查找” 132
063 在給定字符串中查找指定字符串位置的“字符串查找” 134
064 從不一緻字符的位置和局部字符串的結構提高查找效率的KMP法 136
065 從局部字符串的末尾到開頭比較字符的BM法 138
COLUMN 利用關係數據庫進行排序和查找 140
第6章 其他算法 141
066 通過活用微分來求高次方程式解的牛頓法 142
067 聯閤方程組的求解方法是高斯消元法 144
068 根據梯形麵積的計算求定積分值的梯形法 146
069 用於求*短時間、*短距離之類的*優路徑的方法:基於圖的迪傑斯特拉法 148
070 判斷自然數n是否是素數的“埃拉托色尼篩法” 150
071 利用遞歸調用求n的階乘 152
COLUMN 算法和流程圖 154
第7章 算法的復雜度 155
072 算法的復雜度中有時間復雜度和空間復雜度 156
073 時間復雜度通過“運算”、“條件比較”、“代入處理”等操作次數來測量 158
074 算法的復雜度用“O記法”來錶示 160
COLUMN 提高編程能力的方法 162
參考文獻 163
在綫試讀
第1章 什麼是算法?
在編寫計算機程序時,知道各種各樣的算法有助於我們寫齣一個更“優雅”的程序。為瞭創造高效率、正確解決問題的程序,讓我們開始學習吧。
001 烹飪用的食譜就是算法
算法(Algorithm)是利用計算機解決問題的處理步驟。這裏的問題有
1 求*大公約數
2 重新排列信息的順序
3 查找所需信息
等不同的類型。在現代社會,這樣的信息處理是通過計算機進行的,這種處理過程中的處理步驟稱為算法。
如上所述,算法就是解決問題的步驟。仔細觀察,我們可以注意到算法不僅僅用於計算機的數據處理,現實世界中的各種問題也需要結閤算法的概念來解決,其中具有代錶性的就是烹飪中用到的食譜。
食譜是各種美味料理的製作方法,需要用一定的步驟錶示齣來。例如,要做
咖喱雞肉
豬肉燉土豆
等菜品,食譜中記錄著每道菜所需材料的種類和數量,並按步驟準確地描述瞭製作過程。按照這個步驟,誰都能夠做齣標準的咖喱雞肉,並且,根據咖喱雞肉的製作程序,任何人完成的一定是咖喱雞肉,而不會成為蓋澆飯或其他料理。這種“解決問題的處理步驟”(如咖喱雞肉的烹飪食譜)稱為算法。
要點
算法是“解決問題的處理步驟”
烹飪用的食譜也是算法
圖1 什麼是算法
圖2 烹飪用的食譜
002 算法是古老的智慧
烹飪用的食譜雖然也可以說是算法,但是即使按照食譜上的步驟做齣來的料理也不一定是可口的。雖然與食譜上的步驟一緻,但做齣來的菜大傢也許認為並不好吃。如果這樣,這個食譜將被當做“壞食譜”,使用的人也會漸漸變少,自然就會被淘汰。
另一方麵,能做齣每個人都認為可口的食物的食譜,會被多個人反復利用,這樣的食譜就會被認為“好食譜”。“好食譜”通過人們的努力,將進一步成為美味料理的食譜。因此,烹飪用的食譜是為瞭創造美味料理而日積月纍下來的“古老的智慧”。
計算機的算法與其相似。自計算機問世以來,人們已研究齣無數可以用計算機解決的處理問題的方法。在這種情況下,許多研究人員仍在改進算法,並研究有沒有更普遍的處理方法,有沒有更高效的處理方法,有沒有數據量更少的處理方法。這樣細化齣來的好算法,已經在很多計算機程序中被使用瞭。所以,算法也是為創造更“優雅”的程序而積纍的“古老的智慧”。
好的算法本身會成為程序設計的範本。學習算法也在編寫一個良好程序的過程中起到指導作用。
要點
算法是古老智慧的結晶,是程序的範本
學習算法纔能編寫齣高質量的程序
圖1 食譜的改進
圖2 算法的改進
003 懂得瞭算法遊戲水平會更高
學習算法的同時能提高自己的編程能力。一個好的算法是編寫程序的模型,因為它能創造計算機程序,其中還包含瞭程序的精髓。這與遊戲中的“棋譜”是一樣的道理,遊戲中掌握好策略的一方往往能獲勝。
例如,“從畫麵上方開始追擊敵方人物,並用移動炮颱攻擊敵人”等早期在電視遊戲中經常看到的“××式”或“××擊”的戰鬥攻略,如果按照這樣的方法操作,不需要花費很長時間,每次都能輕鬆擊敗敵人,這就是遊戲攻略中的“棋譜”。
“棋譜”是圍棋術語,指“某種棋局下,*好的下棋步驟”,在日本象棋或國際象棋中稱為“棋式”,英文為theory。下圍棋時,如果懂得棋譜,就不需要每次考慮“尋找*好的一步棋”,按照棋譜就可以走齣*好的幾步棋。棋譜是先人們智慧的結果,因此掌握多種棋譜的人
更容易在對弈中獲得勝利。熟練掌握棋譜的人與不懂棋譜的人對弈誰會獲勝,顯而易見。
計算機算法有同樣的道理。學過算法的人寫齣的程序和沒學過算法的人寫齣的程序有明顯的差距。要寫齣既能正確執行又能提高效率的好程序,算法的學習是不可或缺的。
要點
算法的學習類似學習遊戲攻略
算法是編寫好程序的“棋譜”
內容介紹
在我們生活的世界中,各種各樣形形色色的事物和現象,其中都必定包含著科學的成分。在這些成分中,有些是你所熟知的,有些是你未知的,有些是你還一知半解的。麵對未知的世界,好奇的你是不是有很多疑惑、不解和期待呢?!“形形色色的科學”趣味科普叢書,把我們身邊方方麵麵的科學知識活靈活現、生動有趣地展示給你,讓你在暢快閱讀中收獲這些鮮活的科學知識!
21世紀,飛速發展的計算機技術深入到手機、電視、相機、遊戲機等的生活産品中。計算機都是依靠程序來運行的。為瞭編寫齣能夠在計算機上運行良好的程序就必須學習計算機算法的知識。本書用流程圖、程序語言等日常生活中經常齣現的事物為工具,以圖解的形式講解瞭算法的相關知識,即使是不具備計算機知識的初學者,也能夠輕鬆理解。
程序語言的奧妙:算法解讀 下載 mobi epub pdf txt 電子書