數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)Python語言實現(xiàn)
本書首先介紹算法的概念和特點,然后學習數(shù)據(jù)結(jié)構(gòu),再逐步深入學習各類算法,通過解決實際問題加深理解。本書選取近年來比較熱門的語言Python作為載體,來實現(xiàn)算法的功能。這不但可以讓讀者系統(tǒng)地學習算法的相關(guān)知識,而且還能加深對Python語言的應用。
本書分為7章,涵蓋的主要內(nèi)容包括:算法簡介;Python基礎(chǔ);數(shù)據(jù)結(jié)構(gòu);數(shù)學相關(guān)算法;排序算法;查找算法;圖相關(guān)算法。其中對經(jīng)典算法進行了詳細的講解,比如歸并排序,快速排序,拓撲排序,二叉查找樹,紅黑樹,最小生成樹算法,最短路徑算法,極大極小值算法,遺傳算法等。最后通過歸納總結(jié),讓讀者懂得常見算法的設(shè)計思路,能夠根據(jù)實際情況選取合適的算法使用。
本書適合大學生、程序員,以及對數(shù)據(jù)結(jié)構(gòu)和算法感興趣的讀者閱讀。
陳良旭,畢業(yè)于法國國立高等應用電子學院(ENSEA),獲得計算機工程師文憑,曾在ETIS實驗室研究LDPC算法,F(xiàn)任職于佛山珠江傳媒大數(shù)據(jù)科技有限公司,從事數(shù)據(jù)分析工作,研究方向有輿情監(jiān)控、數(shù)據(jù)糾錯等。
第1章 從零開始學算法 1
1.1 算法基礎(chǔ)知識 21.1.1 什么是算法 2
1.1.2 算法時間復雜度 2
1.1.3 算法空間復雜度 5
1.1.4 算法優(yōu)劣比較 6
1.2 計算機中如何描述算法 61.2.1 自然語言 7
1.2.2 流程圖 7
1.2.3 偽代碼 8
1.2.4 挑戰(zhàn):這個月有多少天 8
1.3 Python概述 101.3.1 Python簡介 10
1.3.2 環(huán)境搭建 11
1.3.3 開發(fā)工具介紹 15
1.3.4 單元測試 22
1.4 總結(jié) 252
第2章 數(shù)據(jù)結(jié)構(gòu) 27
2.1 數(shù)組 282.1.1 定義 28
2.1.2 挑戰(zhàn)1:海盜船生存大考驗 30
2.1.3 挑戰(zhàn)2:必勝的游戲 32
2.2 鏈表 372.2.1 定義 37
2.2.2 挑戰(zhàn):國王的繼承人 43
2.3 隊列 452.3.1 定義 45
2.3.2 挑戰(zhàn):維修報警器 48
2.4 棧 502.4.1 定義 51
2.4.2 挑戰(zhàn)1:和機器人做朋友 52
2.4.3 挑戰(zhàn)2:讓機器人幫你檢查作業(yè) 54
2.5 哈希表 562.5.1 定義 56
2.5.2 挑戰(zhàn):基因研究 62
2.6 樹 642.6.1 定義 65
2.6.2 二叉樹 66
2.6.3 二叉查找樹 71
2.6.4 挑戰(zhàn):畫一棵好看的“樹” 75
2.7 圖 782.7.1 定義 79
2.7.2 圖的表示 79
2.7.3 圖的遍歷 82
2.7.4 挑戰(zhàn):“一筆畫完”小游戲 86
2.8 總結(jié) 913
第3章 數(shù) 學 92
3.1 進制轉(zhuǎn)換 93
3.2 基本概念 933.2.1 十進制 93
3.2.2 二進制 93
3.2.3 八進制和十六進制 93
3.2.4 進制轉(zhuǎn)換 94
3.2.5 挑戰(zhàn):網(wǎng)絡(luò)攻擊 98
3.3 數(shù)學運算 1003.3.1 內(nèi)置函數(shù) 100
3.3.2 Math庫模塊 101
3.3.3 排列組合 102
3.3.4 矩陣運算 102