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