算法趣學

英昌盛、董延華、李闖、滕泰

  • 出版商: 清華大學
  • 出版日期: 2021-08-01
  • 定價: $294
  • 售價: 8.5$250
  • 語言: 簡體中文
  • 頁數: 212
  • 裝訂: 平裝
  • ISBN: 7302581487
  • ISBN-13: 9787302581482
  • 相關分類: Algorithms-data-structures程式語言
  • 立即出貨 (庫存 < 3)

  • 算法趣學-preview-1
  • 算法趣學-preview-2
  • 算法趣學-preview-3
算法趣學-preview-1

買這商品的人也買了...

相關主題

商品描述

本書系統介紹程序設計中常用的基礎算法及典型案例,包括排序算法、遞歸算法、數論基礎、組合數學基礎、貪心算法、分治算法、動態規劃算法和回溯算法等內容。 全書以圖文並茂的方式講解各種基礎算法的分析過程,側重於基礎算法的深入理解與實踐,配有大量圖表輔助算法的分析過程,適用於有一定程序設計基礎、尚未學習數據結構且對算法分析與設計感興趣的算法初學者。 本書各章節配有典型案例和大量圖表,既便於教師課堂講授,也適合讀者自學,可作為高等院校“程序設計基礎”課程的延伸和“算法分析與設計”課程的入門教材,也可供程序設計競賽初學者參考。

作者簡介

英昌盛,男,1979年生,博士,吉林師範大學計算機學院系主任,主要研究方向為雲計算及算法分析與設計。
教學及科研成果:發表SCI論文2篇,EI論文1篇;主編教材1部,參編教材3部;主持及參與省教改項目2項、省職業與成人教育項目1項、教育部協同育人項目4項;參與並完成吉林省金課1項,作為主要參加人參與申報並成功獲批國j級一流專業、國j級一流課程。

目錄大綱

第1章環境搭建1
1.1Microsoft Visual C 2010學習版使用1
1.1.1Visual C 2010學習版安裝2
1.1.2創建、編輯、編譯和運行項目4
1.1.3為什麼缺少很多選項8
1.1.4為什麼一閃而過9
1.1.5其他配置選項10
1.2Code::Blocks的使用14
1.2.1安裝Code::Blocks14
1.2.2創建項目和編輯源代碼16
1.2.3調試20

第2章排序算法23
2.1冒泡排序24
2.1.1冒泡排序的基本思想24
2.1.2冒泡排序過程分析24
2.1.3冒泡排序代碼分析26
2.2選擇排序28
2.2.1選擇排序的基本思想28
2.2.2選擇排序過程分析28
2.2.3選擇排序代碼分析30
2.3插入排序31
2.3.1插入排序的基本思想31
2.3.2插入排序過程分析32
2.3.3插入排序代碼分析33
2.4計數排序35
2.4.1計數排序的基本思想35
2.4.2計數排序過程分析35
2.4.3計數排序代碼分析37
2.4.4統計句子中字母出現次數39

第3章遞歸算法42
3.1漢諾塔問題42
3.1.1漢諾塔問題解題思路分析42
3.1.2漢諾塔問題代碼分析44
3.2全排列問題45
3.2.1無重複元素的全排列46
3.2.2有重複元素的全排列48
3.3因數分解問題50
3.3.1因子遞增方式遞歸求解51
3.3.2子問題分解方式遞歸求解52
3.3.3分解因數問題代碼分析52
3.4分形圖形54
3.4.1盒分形思路分析54
3.4.2盒分形代碼分析55

第4章數論基礎58
4.1餘數和公約數58
4.1.1餘數58
4.1.2公約數61
4.1.3歐幾里得算法61
4.2素數問題62
4.2.1素數的概念63
4.2.2素數相關的定理63
4.2.3篩選法求素數64
4.3同餘問題71
4.3.1同餘及其性質71
4.3.2線性同餘72

第5章組合數學基礎90
5.1排列生成算法90
5.1.1序數生成法91
5.1.2字典序生成法94
5.1.3“火星人”問題95
5.2組合生成算法97
5.2.1基於字典序的組合生成算法98
5.2.2基於格雷碼的組合生成算法102第6章貪心算法111
6.1結構體111
6.2貪心算法概述113
6.3活動時間安排114
6.3.1活動安排過程分析115
6.3.2活動安排代碼分析117
6.4裝載問題119
6.4.1裝載問題過程分析119
6.4.2裝載問題代碼分析120
6.5可切割背包問題122
6.5.1可切割背包問題分析122
6.5.2可切割背包代碼分析124
6.6刪數問題126
6.7操作系統內存分配128
6.7.1First Fit內存分配130
6.7.2Best Fit內存分配131
6.7.3Worst Fit內存分配133

第7章分治算法135
7.1快速排序136
7.1.1快速排序過程分析136
7.1.2快速排序代碼分析138
7.2歸併排序139
7.2.1歸併排序過程分析140
7.2.2歸併排序代碼分析140
7.3二分查找142
7.3.1二分查找過程分析142
7.3.2二分查找代碼分析143
7.4循環賽145
7.4.12k循環賽日程表145
7.4.2奇偶循環賽日程表149
7.5大整數乘法153
7.5.1大整數乘法過程分析154
7.5.2大整數乘法代碼分析155

第8章動態規划算法159
8.1數字三角形159
8.1.1使用樸素遞歸求解數字三角形問題160
8.1.2使用動態規划算法求解數字三角形問題161
8.2長公共子序列168
8.2.1長公共子序列問題過程分析168
8.2.2長公共子序列問題代碼分析169
8.3編輯距離172
8.3.1編輯距離的正向生成172
8.3.2操作序列的逆向回溯174
8.401背包問題(一)178
8.4.101背包問題過程分析179
8.4.201背包問題代碼分析180
8.5石子合併183
8.5.1石子合併問題過程分析184
8.5.2石子合併問題代碼分析185

第9章回溯算法193
9.1八皇后問題193
9.1.1八皇后問題過程分析193
9.1.2八皇后問題代碼分析195
9.2子集和問題198
9.2.1子集和問題過程分析198
9.2.2子集和問題代碼分析199
9.301背包問題(二)202
9.3.101背包問題過程分析202
9.3.201背包問題代碼分析204
9.4裝載問題206
9.4.1裝載問題過程分析206
9.4.2裝載問題代碼分析207
9.5任務分配問題209
9.5.1任務分配問題過程分析209
9.5.2任務分配問題代碼分析210

參考文獻213