3dwoo大學簡體電腦書店
寫給大家看的算法書
( 簡體 字)
作者:絕云類別:1. -> 程式設計 -> 演算法
出版社:電子工業出版社寫給大家看的算法書 3dWoo書號: 44245
詢問書籍請說出此書號!
有庫存
NT售價: 295
出版日:5/1/2016
頁數:192
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787121287442 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第 1 章 什么是算法 ....... 1
1.1 算法其實就在身邊 .........2
1.2 算法是人類智慧的結晶 .......4
1.3 了解算法對玩游戲有幫助嗎 .......6
1.4 算法有兩個必要條件 .........8
1.5 要特別了解的重要算法 .......10
專題 1 算法基礎之結構化編程思想 .......12
第 2 章 變量和數組 ....... 13
2.1 所謂“數據”,就是各種各樣的信息 .....14
2.2 數據有不同的類型 .........16
2.3 最基礎的數據是“值” .......18
2.4 裝著“值”的盒子叫作“變量” .......20
2.5 要描述算法,變量是不可或缺的 .....22
2.6 所謂“代入”,指的是把數據賦予變量 .....24
2.7 不同的變量有不同的名稱 .......26
2.8 變量命名要能解釋變量裝載的數據 .....28
2.9 把數據代入變量的賦值語句 .......30
2.10 把變量中存儲的值代入其他變量 .....32
2.11 變量也有數據類型 ........34
2.12 保存大量同一數據類型值的“數組” .....36
目 錄
寫給大家看的算法書
X
2.13 數組用“數組名”標記 .......38
2.14 數組的元素用“下標”管理 .......40
2.15 什么時候需要用到“數組”呢 .......42
2.16 “數組”就像儲物柜一樣 .......44
2.17 “二維數組”就像是旅館里的房間 .....46
2.18 二維數組的各個元素用兩個下標來管理 .....48
2.19 字符串就是字符的連續拼合(數組) .....50
2.20 獲取字符串長度的兩個方法 .......52
專題 2 常用變量命名 .........54
第3章 數據結構 ....... 55
3.1 為了高效處理大量數據 .......56
3.2 有哪些常用的數據結構 .......58
3.3 “堆棧”類似于桌面上堆積的書 .......60
3.4 “隊列”就像是超市收銀臺前排著的隊列 .....62
3.5 “鏈表”就像用繩子串起來的長串 .....64
3.6 只能檢索下一個數據的單向鏈表 .....66
3.7 能檢索上一個或者下一個數據的雙向鏈表 .....68
3.8 能快速定位第 N 個數據的是“數組” .....70
3.9 能快速插入、刪除數據的是“鏈表” .....72
3.10 像鐘表一樣數據首尾相連的是“環形緩沖區” ...74
3.11 管理有樹干、樹枝、樹葉一樣關系的數據的是“樹” ..76
3.12 一個父節點對應兩個子節點的是“二分樹” ...78
3.13 像筆畫的節點和連線組成的數據結構是“圖” ...80
專題 3 為什么數組的起始下標有時是 0,有時是 1 ? ..82
第4章 學習算法基礎 ........ 83
4.1 循環處理是算法的基礎 .......84
4.2 計算 1 ~ N 的整數的總和 .......86
目錄
XI
4.3 使用數組可以高效地處理大量數據 .....88
4.4 計算一年的營業額 .........90
4.5 求班級考試的總分和平均分 .......92
4.6 求最高分 ...........94
4.7 求最低分 ...........96
4.8 為考試成績排名 .........98
4.9 求全班學生不同科目考試合計的總分 .....100
4.10 求“時分秒”形式的時間差 .......102
4.11 交換兩個變量值的技巧 ........104
4.12 求兩個數值的最大公約數 .......106
專題 4 2038 年的時候要留心? ......108
第 5 章 排序算法 ....... 109
5.1 排序是指對多個數據排列順序 .......110
5.2 關于排序算法 .........112
5.3 使用“木桶”輔助的“桶排序” .....114
5.4 每次找出一個最小(最大)值的“選擇排序” ...116
5.5 像冒泡一樣進行相鄰數據的交換的“冒泡排序” ...118
5.6 向有序數據里正確位置插入數據的“插入排序” ...120
5.7 把幾個有序數據合并叫作“歸并” .....122
5.8 利用歸并進行排序的算法叫作“歸并排序” ...124
5.9 改進了排序效率的“希爾排序” .....126
5.10 最快的排序算法“快速排序” .......128
專題 5 把 2 的 n 階乘的值記下來吧 .....130
第 6 章 搜索算法 ....... 131
6.1 所謂“搜索”,就是從數據集合中找到目標數據 ...132
6.2 從頭開始按順序排除的搜索叫作“線性搜索” ...134
6.3 可以進行高速搜索的“二分搜索” .....136
寫給大家看的算法書
XII
6.4 利用哈希表實現高效搜索 .......138
6.5 在字符串中搜索部分字符串的“字符串搜索” ...140
6.6 高效搜索字符串的 KMP 算法 .......142
6.7 逆向比較的 BM 字符串搜索算法 .....144
專題 6 在關系型數據庫中使用到的排序和搜索 ...146
第 7 章 其他算法 ....... 147
7.1 用牛頓法求解高次方程 .......148
7.2 用高斯消元法求解方程組 .......150
7.3 用梯形面積和來求解定積分的梯形法 .....152
7.4 計算質數的埃拉托斯特尼篩法 .......154
7.5 執行時調用自身的遞歸函數 .......156
專題 7 算法和流程圖 .........158
第 8 章 算法和計算機 ....... 159
8.1 計算機的數據是用二進制來表示的 .....160
8.2 讓二進制數更易于閱讀(八進制、十六進制) ...162
8.3 二進制轉換成十進制 .......164
8.4 十進制轉換成二進制 .......166
8.5 用二進制表示負整數 .......168
8.6 邏輯或 :任意一個為“ 1”則結果為“ 1” .....170
8.7 邏輯并 :同時為“ 1”則結果為“ 1” .....172
8.8 “或非”:“ 1”和“ 0”得到的結果為“ 1” .....174
8.9 “否定”:“ 1”變為“ 0”,“ 0”變為“ 1” .....176
8.10 使用德摩根定律可以管理否定范式 .....178
算法是大數據分析與處理的關鍵基礎。本書以漫畫形式輕松講解算法的基本知識、關鍵應用,并以案例貫穿其中,明白易懂。將高大上的算法以明白易懂的方式說透,是本書最大特色,適合與數據相關的從業人員學習、了解。本書以漫畫形式輕松講解算法的基本知識、關鍵應用,并以案例貫穿其中,明白易懂。

推薦序
記得有一次,朋友讀書時看見了“維恩圖”一詞,不明白它的意思,
于是跑來問我。當時,我大致是這么回答的 :“假設有若干個元素,同
時還有若干種性質。為了直觀地表現出哪些元素具有哪些性質,我們可
以在平面上畫出若干個封閉曲線,每個封閉曲線內的區域代表某種性質,
然后把各個元素填寫在正確的區域里。如果某個元素同時具有兩個或多
個性質,那就必須把它填寫在相應的兩個或多個區域的公共部分里。所
以,我們要求這些封閉區域必須恰當地相交,使得每種可能的公共部分
都存在。”
看見朋友一副茫然的表情,我只好找來紙和筆,舉了一個實際的例
子 :“如果這三個圓形區域分別代表‘奇數’、‘質數’、‘平方數’,那么
1 就該填到這兒, 2 就該填到這兒, 3 就該填到這兒……”
朋友忽然興奮地說 :“哦,我好像懂了!維恩圖的意思是不是就是,
當我想知道眼前的一群人是一群什么樣的人時,我就在地上畫幾個圈,
分別表示‘已婚’、‘黨員’、‘上班族’,等等,然后每個人屬于哪些類
就站進哪些圈子里,而且我在地上畫的圈需要保證,不管來了什么樣的
人,他總能找到個地兒站!”
“沒錯沒錯,就是這樣!”我激動地說道,仿佛恍然大悟的是我一樣。
類似的經歷我還遇到過一次,只不過我的位置換了一下。你知道嗎?
在現實生活中可能出現某些商品,它的價格升高時,人們的購買量也隨
之增加。這樣的商品叫作“吉芬商品”。很有趣吧!很想搞明白這背后
寫給大家看的算法書
IV
的原理吧!第一次聽說這樣的經濟學現象后,我也感到非常好奇,我也
很想知道這背后的原理。我在網上查到了很多與此相關的文章,它們的
標題大多類似于“吉芬商品背后的直觀解釋”。每篇文章里都出現了同
一個生詞,“無差異曲線”。不管閱讀哪篇文章,我都會卡在這個生詞處。
什么是無差異曲線?這看起來似乎是經濟學中的一個非常基本的東西,
因為幾乎所有作者在講解時,都會假設讀者已經知道了它的意思。
無奈,我又開始搜尋“無差異曲線”的意思,結果仍然是一頭霧水。
大多數地方給出的解釋是這樣的 :“一條條從左上方延伸到右下方的曲
線,說明消費者的偏好不變時,若其中一種商品的消費增加,另一種商
品的消費會如何減少……同一條曲線上面的每一點對應的商品組合是不
同的,但是人們從中得到的效用卻是相同的。”對于從沒接觸過經濟學
的人來說,這樣的句子簡直如天書一般。
最后,借來一本經濟學教材,研究了里面的好幾個例子,才讓我茅
塞頓開 :唉,說得這么麻煩干什么,無差異曲線其實就是購買不同數量
的 A 和 B,給人帶來的滿足感的“等高線”嘛!懂得什么是無差異曲
線之后,再看吉芬商品的講解文章時,就完全沒有障礙了。
學習一門新的學科,往往會遇到很多新的概念。不幸的是,專家們
對這些概念太過熟悉,很難意識到這會成為初學者理解的障礙 ;即使意
識到了這一點,恐怕一時也很難想到一種真正面向初學者的、簡單直白
一語中的的解釋;即使想到了這樣的解釋,綜合考慮文體、篇幅等原因,
或許也不會真的寫下來。種種經歷讓我深知,填補這個空白是很有必要
的。但是,誰來填補這個空白呢?
幸運的是,現在,編程初學者有了像《寫給大家看的算法書》這樣
的書。學習編程變得簡單多了。數組,其實就是一排印有號碼的儲物柜;
堆棧,其實就是桌面上堆積的書……書中充滿了這些生動有趣的比方,
它們總能讓我由衷地感嘆 :這比方打得實在是太貼切了。
《寫給大家看的算法書》里還會談到一些更基本的問題。為什么依
V
推薦序
次執行 X ← Y 和 Y ← X 不能交換兩個變量的值?這是因為,往變量里
代入值的時候,舊的值是會被覆蓋掉的。在專業的程序員看來,這幾乎
是廢話 ;但誰能想到,或許恰恰就是這句“廢話”,解答了某個初學者
百思不得其解的困惑。你是否讀過很多編程入門讀物,但仍然覺得有門
檻?那么,這本書值得你嘗試。
在信息化和大數據的背景下,人們的思維也或多或少地受到了計算
機模型的影響,討論問題時“樹”、“節點”、“字符串”等詞常常是張口
就來。如果由于學習或者工作的原因,你時不時地會遇到這些陌生的詞
匯,相信這本書也會對你有幫助。
數學科普作家 顧森

前 言
計算機自 20 世紀發明以來得到了飛速的發展,在 21 世紀的現代社
會,不僅僅是個人計算機,智能手機、電視、電子照相機、游戲機等預
裝計算機的設備也越來越普及。甚至,地鐵的自動刷卡設備、 ATM 自
動柜員機、自動販賣機等現代社會生活中不可或缺的機器,如果沒有了
計算機,那么機器的控制、顧客的管理、財務的管理、售賣的管理等各
種各樣的公司業務全都開展不了。
為了編寫在計算機上可以良好運行的程序,我們必須學習“算法”。
本書的主旨就是從基礎開始詳盡地講解算法。為了讓初學者也能充分理
解內容,“盡可能通俗易懂”,筆者盡量讓大家在輕松學習算法的同時,
也可以嘗試理解計算機編程中用到的一些思維方式。
另外,為了讓中學生也能輕松閱讀,本書虛構了埃里根博士、小艾、
小莉這三個角色,對算法相關的知識進行講解。請把自己想象成小艾或
者小莉,嘗試在埃里根博士的算法講座中學習吧。
第 1 章 探討了“什么是算法”這個話題。算法這個詞匯可能大家
日常生活中接觸不多,所以乍聽之下會有晦澀艱深的感覺。但簡單來說,
算法就是“為解決特定問題需要進行的處理步驟”。本章為講解得更通
俗易懂,拿日常生活中的菜譜做類比。
第 2 章 主要對描述算法的重要元素“數據”進行講解,包括數據
的存、取方法等。另外,本章也對在算法表示問題解決步驟時所必需的
“變量”進行講解,本章詳細講解了它作為數據存儲的“盒子”的特征。
寫給大家看的算法書
VIII
第 3 章 講述了對各種不同形式的數據進行管理的“數據結構”這
種管理方式。本章還對其中的特例,如“數組”、“鏈表”、“樹”等數據
結構各自的優缺點進行了講解。
第 4 章 介紹了算法中記述處理步驟的最重要的要素“循環”及使
用“循環”進行復用處理的方法。
第 5 章 介紹了最重要的算法之一“排序”。本章從低效但簡單的排
序處理講起,由淺入深講解復雜但高效的排序處理。
第 6 章 介紹了另一類最重要的算法——“搜索”。本章會講述單純
的搜索、已排序的數據的搜索,以及字符串的搜索等。
第 7 章 介紹一些解決數學問題的算法。本章主要講解了可以在科
學計算領域派上用場的“求解高斯方程”、“求解方程組”及“求定積分
的值”等算法。
第 8 章 探討了“算法和計算機”這個話題。主要解釋了一些為實
現算法需要了解的計算機相關的基礎知識。
通讀本書,如果讀者能夠稍稍消除“算法是什么呀”這種顧慮,并
且產生“原來如此,探究起來,計算機程序就是由一些簡單的處理組合
起來的東西啊”這樣的想法的話,那真是筆者的榮幸。另外,如果本書
的內容能成為大家以后熟悉計算機后編寫良好、高效的程序的基礎的話,
那我真是太開心了。
2012 年 11 月 杉浦賢
pagetop