算法競賽從新手到高手

陳夢 姜慧慧

  • 出版商: 清華大學
  • 出版日期: 2026-06-01
  • 定價: $479
  • 售價: $478
  • 語言: 簡體中文
  • ISBN: 7302715793
  • ISBN-13: 9787302715795
  • 相關分類: Algorithms-data-structures
  • 尚未上市,歡迎預購

  • 算法競賽從新手到高手-preview-1
  • 算法競賽從新手到高手-preview-2
  • 算法競賽從新手到高手-preview-3
  • 算法競賽從新手到高手-preview-4
  • 算法競賽從新手到高手-preview-5
  • 算法競賽從新手到高手-preview-6
  • 算法競賽從新手到高手-preview-7
算法競賽從新手到高手-preview-1

商品描述

"《算法競賽從新手到高手》是專為算法初學者打造的全棧學習指南,系統講解從基礎理論到實戰應用的完整知識體系。作為計算機科學的核心領域,算法不僅是編程競賽的基石,更是解決實際工程問題的關鍵工具。《算法競賽從新手到高手》通過工程化的教學方式,幫助讀者掌握算法設計的核心原理與前沿優化技術,構建專業的算法分析與實現能力。 《算法競賽從新手到高手》致力於從多維度、全方位幫助讀者快速掌握算法設計與優化技能,搭建從理論基礎到工程實踐的橋梁,使有誌於從事軟件開發、算法研究或技術競賽的讀者能夠順利提升核心競爭力,並在求職與項目中脫穎而出。 《算法競賽從新手到高手》既可作為系統學習算法的標準教材,也可作為工程開發中的速查手冊,通過“理論講解+實戰演練”的雙軌模式,幫助不同技術基礎的讀者實現算法能力的快速躍升。本書特別適合希望深入理解算法本質並將其高效應用於實際開發的程序員、競賽選手及技術面試備考者。 "

作者簡介

"陳夢,資深算法工程師、暢銷技術書作者,深耕算法領域十余年,兼具**算法競賽背景、專業教學經驗與工程研發能力,擁有紮實的數學功底與卓越的代碼實現能力。熟悉 NOIP、ACM/ICPC 等主流賽事體系,深諳競賽命題規律與解題思維。畢業後長期從事算法教學與競賽訓練指導,擅長將晦澀的底層邏輯與競賽解題思路相結合,用極簡表達拆解復雜知識,貼合新手認知路徑,她憑借嚴謹的邏輯架構、清晰的講解範式與多年競賽教學沈澱,她為本書核心內容提供堅實質量保障,精準助力程序員、算法愛好者及競賽選手從基礎夯實到能力突破,實現從新手到高手的穩步提升。姜慧慧,資深算法工程師、技術圖書作者,深耕算法與編程實踐領域多年,擁有深厚的算法理論功底、豐富工程開發經驗與一線算法競賽輔導積澱,對數據結構、貪心、動態規劃、圖論、搜索等競賽核心體系有系統性研究。她長期專註算法教學與競賽培訓工作,熟悉 NOIP、省賽、校賽等各類賽事特點,善於從學習者視角拆解痛點、提煉技巧,將抽象算法轉化為可理解、可模仿、可得分的解題步驟。她以專業嚴謹的內容設計與通俗易懂的表達風格,為本書提供高質量支撐,助力讀者從零搭建算法思維,熟練掌握競賽常用解法,並能靈活應用於比賽與實際項目開發。"

目錄大綱

目錄

 

第1章 數據結構與算法     1

1.1 數據結構     1

1.1.1 什麼是數據結構     1

1.1.2 數據結構的發展     2

1.1.3 數據基本特性     3

1.1.4 數據的邏輯結構和存儲結構     4

1.1.5 數據結構的研究對象     5

1.2 算法     6

1.2.1 什麼是算法     6

1.2.2 算法的特性     6

1.2.3 算法的時間復雜度和空間復雜度     7

1.2.4 算法的描述方法     8

1.3 算法分析     9

1.3.1 算法的復雜度分析     9

1.3.2 常用的算法設計方法     10

1.3.3 算法分析在競賽中的應用     10

1.4 數據結構與算法的關系     11

1.5 牛刀小試     13

第2章 算法編程基礎     15

2.1 基本數據類型     15

2.1.1 基本數據類型的分類     15

2.1.2 競賽真題實戰     17

2.2 變量與常量     17

2.2.1 變量的命名與賦值     17

2.2.2 常量     18

2.2.3 輸入與輸出     19

2.2.4 競賽真題實戰     21

2.3 運算符和表達式     21

2.3.1 算術運算符     21

2.3.2 邏輯運算符     22

2.3.3 關系運算符     22

2.3.4 條件運算符     22

2.3.5 賦值運算符     24

2.3.6 位運算符     24

2.3.7 競賽真題實戰     25

2.4 流程控制     25

2.4.1 順序結構     25

2.4.2 條件分支結構     26

2.4.3 循環結構     27

2.4.4 競賽真題實戰     27

2.5 數組     28

2.5.1 一維數組     28

2.5.2 二維數組     29

2.5.3 競賽真題實戰     31

2.6 函數     31

2.6.1 函數定義     32

2.6.2 函數的使用     32

2.6.3 函數重載     33

2.6.4 競賽真題實戰     33

2.7 牛刀小試     34

第3章 棧和隊列     37

3.1 棧     37

3.1.1 順序棧     38

3.1.2 鏈棧     38

3.1.3 棧的基本操作     39

3.1.4 使用數組實現棧     44

3.1.5 使用鏈表實現棧     48

3.1.6 競賽真題實戰     52

3.2 隊列     53

3.2.1 順序隊列     53

3.2.2 鏈式隊列     54

3.2.3 隊列的基本操作     54

3.2.4 使用數組實現隊列     62

3.2.5 使用鏈表實現隊列     65

3.2.6 競賽真題實戰     69

3.3 競賽真題:棧實現隊列     70

3.4 競賽真題:隊列實現棧     71

3.5 優先隊列     73

3.5.1 優先隊列的基本操作     73

3.5.2 競賽真題實戰     77

3.6 牛刀小試     78

第4章 樹與二叉樹     81

4.1 樹     81

4.1.1 樹的定義     81

4.1.2 樹的存儲     83

4.1.3 競賽真題實戰     87

4.2 二叉樹     87

4.2.1 二叉樹的定義     88

4.2.2 二叉樹的性質     89

4.2.3 二叉樹的存儲結構     92

4.2.4 二叉樹的遍歷     93

4.2.5 競賽真題實戰     101

4.3 二叉查找樹     102

4.3.1 二叉查找樹的定義     102

4.3.2 二叉查找樹的基本操作及性能分析     102

4.3.3 競賽真題實戰     107

4.4 平衡二叉樹     108

4.4.1 平衡二叉樹的定義     108

4.4.2 平衡二叉樹的基本操作     109

4.4.3 紅黑樹的定義及性能分析     117

4.4.4 競賽真題實戰     118

4.5 森林     119

4.5.1 森林的定義     119

4.5.2 森林的遍歷     119

4.5.3 樹、森林與二叉樹的轉換     120

4.5.4 競賽真題實戰     122

4.6 牛刀小試     122

第5章 圖的存儲、遍歷和連貫性     125

5.1 圖     125

5.1.1 圖的定義     125

5.1.2 圖的分類     126

5.1.3 競賽真題實戰     127

5.2 圖的存儲     128

5.2.1 鄰接矩陣     129

5.2.2 邊集數組     132

5.2.3 鄰接表     133

5.2.4 十字鏈表     138

5.2.5 鏈式前向星     141

5.2.6 競賽真題實戰     144

5.3 圖的遍歷     145

5.3.1 廣度優先遍歷     145

5.3.2 深度優先遍歷     148

5.3.3 競賽真題實戰     151

5.4 圖的連通性     152

5.4.1 基本定義與分類     152

5.4.2 Tarjan算法     153

5.4.3 競賽真題實戰     157

5.5 牛刀小試     158

第6章 圖的應用     162

6.1 最小生成樹     162

6.1.1 Prim算法     162

6.1.2 Kruskal算法     168

6.1.3 競賽真題實戰     171

6.2 最短路徑     172

6.2.1 Dijkstra算法     172

6.2.2 Floyd算法     177

6.2.3 競賽真題實戰     180

6.3 有向無環圖     181

6.3.1 拓撲排序     181

6.3.2 關鍵路徑     184

6.3.3 競賽真題實戰     188

6.4 牛刀小試     189

第7章 排序算法     193

7.1 排序算法的基礎     193

7.1.1 排序的目的     193

7.1.2 排序的分類     194

7.2 冒泡排序     194

7.2.1 冒泡排序的思想     194

7.2.2 冒泡排序的實現     195

7.3 選擇排序     196

7.3.1 選擇排序的思想     196

7.3.2 選擇排序的實現     197

7.4 插入排序     198

7.4.1 插入排序的思想     198

7.4.2 插入排序的實現     199

7.5 快速排序     200

7.5.1 快速排序的思想     200

7.5.2 快速排序的實現     201

7.6 歸並排序     202

7.6.1 歸並排序的思想     202

7.6.2 歸並排序的實現     203

7.7 希爾排序     204

7.7.1 希爾排序的思想     205

7.7.2 希爾排序的實現     205

7.8 競賽真題實戰     206

7.9 牛刀小試     209

第8章 貪心算法     213

8.1 貪心算法的定義和應用場景     213

8.1.1 貪心算法的定義     213

8.1.2 經典應用場景     214

8.2 哈夫曼編碼     214

8.2.1 哈夫曼編碼的原理     214

8.2.2 哈夫曼編碼的實現     215

8.2.3 競賽真題實戰     220

8.3 競賽真題:貨幣選擇問題     220

8.4 競賽真題:最優裝載問題     221

8.5 競賽真題:區間調度問題     222

8.6 競賽真題:汽車加油問題     223

8.7 競賽真題:背包問題     224

8.8 牛刀小試     225

第9章 動態規劃算法     228

9.1 動態規劃算法的核心思想和算法步驟     228

9.1.1 動態規劃的核心思想與特性     228

9.1.2 動態規劃的算法步驟     229

9.2 背包動態規劃     229

9.2.1 0-1背包     229

9.2.2 完全背包     233

9.2.3 競賽真題實戰     233

9.3 競賽真題:線性動態規劃     235

9.4 競賽真題:區間動態規劃     236

9.5 競賽真題:樹狀動態規劃     237

9.6 牛刀小試     238