內容簡介
在我們生活的世界中,各種各樣形形色色的事物和現象,其中都必定包含著科學的成分。在這些成分中,有些是你所熟知的,有些是你未知的,有些是你還一知半解的。麵對未知的世界,好奇的你是不是有很多疑惑、不解和期待呢?!“形形色色的科學”趣味科普叢書,把我們身邊方方麵麵的科學知識活靈活現、生動有趣地展示給你,讓你在暢快閱讀中收獲這些鮮活的科學知識!
21世紀,飛速發展的計算機技術深入到手機、電視、數碼相機、遊戲機等的生活必備産品中。計算機都是依靠程序來運行的。為瞭編寫齣能夠在計算機上運行良好的程序就必須學習計算機算法的知識。《程序語言的奧妙:算法解讀》用流程圖、程序語言等日常生活中經常齣現的事物為工具,以圖解的形式講解瞭算法的相關知識,即使是不具備計算機知識的初學者,也能夠輕鬆理解。
作者簡介
杉浦賢,在係統負載有限公司擔任過微機控製相關的程序編製工作。現主要利用C、C++、C#、VB、.NET等語言從事在Windows上可用的軟件開發工作。此外,在軟件公司做新人培訓工作,同時也是計算機專業學校的兼職講師。著作有《簡明圖解算法的基礎與體係》等書。
內頁插圖
目錄
目錄
第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
前言/序言
程序語言的奧妙:算法解讀 下載 mobi epub pdf txt 電子書