注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)算法第一步(Python版)

算法第一步(Python版)

算法第一步(Python版)

定 價(jià):¥89.00

作 者: 葉蒙蒙 著
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787121391279 出版時(shí)間: 2020-12-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《算法第一步(Python版)》針對(duì)零基礎(chǔ)的初學(xué)者,以算法為核心,以編程為手段,最終的目的是培養(yǎng)讀者的計(jì)算思維。 本書(shū)涉及大學(xué)計(jì)算機(jī)課程中程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)和計(jì)算機(jī)原理等多個(gè)領(lǐng)域的知識(shí),從程序、編程和算法是什么入手;然后重點(diǎn)介紹了控制流程和數(shù)據(jù)結(jié)構(gòu),并針對(duì)數(shù)據(jù)結(jié)構(gòu)的限制和實(shí)現(xiàn)剖析了現(xiàn)代電子計(jì)算機(jī)的基礎(chǔ):二進(jìn)制和馮·諾依曼結(jié)構(gòu);最后重點(diǎn)介紹了6大經(jīng)典算法的原理、過(guò)程和編程實(shí)現(xiàn),以及其背后的算法策略。 為了使零基礎(chǔ)的讀者能夠上手編程,本書(shū)從操作角度闡述了編程工具的使用和程序編寫(xiě)、運(yùn)行、調(diào)試的過(guò)程。

作者簡(jiǎn)介

  葉蒙蒙,微軟資深算法工程師,科普寫(xiě)手。近二十年間積累了大量用C/C++, Java, C# 和 Python開(kāi)發(fā)各類(lèi)軟件的經(jīng)驗(yàn),深刻體會(huì)到編程的核心在于算法。本著幫助更多朋友了解、學(xué)習(xí)計(jì)算機(jī)算法,掌握計(jì)算思維的初心,寫(xiě)作此書(shū)。

圖書(shū)目錄

第1章 認(rèn)識(shí)算法
1.1 算法究竟是什么
1.1.1 廣義的算法
1.1.2 計(jì)算機(jī)領(lǐng)域的算法
1.2 程序、編程和算法之間的關(guān)系
1.2.1 算法與程序
1.2.2 算法與編程
1.2.3 學(xué)習(xí)算法和編程的用處
1.3 學(xué)習(xí)算法的深度
1.3.1 掌握算法的5個(gè)層次
1.3.2 對(duì)應(yīng)不同層次的講解方法
1.3.3 算法驅(qū)動(dòng)編程
1.3.4 算法的難點(diǎn):從原理到實(shí)現(xiàn)

第2章 萬(wàn)事的抽象:控制流程
2.1 認(rèn)識(shí)流程
2.1.1 順序
2.1.2 順序結(jié)構(gòu)
2.1.3 條件(分支)
2.1.4 條件(分支)結(jié)構(gòu)
2.1.5 循環(huán)(迭代)
2.1.6 循環(huán)(迭代)結(jié)構(gòu)
2.2 用簡(jiǎn)單的結(jié)構(gòu)表達(dá)復(fù)雜的過(guò)程:控制結(jié)構(gòu)的排列和嵌套
2.2.1 什么是流程圖
2.2.2 極簡(jiǎn)版流程圖符號(hào)表
2.2.3 最簡(jiǎn)單的流程圖
2.3 流程圖的粒度與嵌套
2.3.1 粒度
2.3.2 嵌套
2.3.3 條件結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的嵌套
2.3.4 粒度均衡的流程圖

第3章 計(jì)算機(jī)是如何運(yùn)行的
3.1 數(shù)據(jù)
3.1.1 信息數(shù)字化
3.1.2 數(shù)據(jù)化與數(shù)據(jù)
3.1.3 數(shù)據(jù)的組織
3.1.4 數(shù)據(jù)結(jié)構(gòu)
3.2 計(jì)算機(jī)原理淺釋
3.2.1 電子計(jì)算機(jī)的前世今生
3.2.2 馮·諾依曼結(jié)構(gòu)
3.2.3 存儲(chǔ)空間的地址和內(nèi)容
3.2.4 一條指令是如何被執(zhí)行的
3.2.5 馮·諾依曼結(jié)構(gòu)的直觀解釋
3.2.6 馮·諾依曼結(jié)構(gòu)的應(yīng)用
3.2.7 馮·諾依曼結(jié)構(gòu)的瓶頸
3.2.8 哈佛結(jié)構(gòu)

第4章 萬(wàn)物的抽象:數(shù)據(jù)結(jié)構(gòu)
4.1 認(rèn)識(shí)數(shù)據(jù)結(jié)構(gòu)
4.1.1 數(shù)組
4.1.2 鏈表
4.2 直觀理解數(shù)據(jù)結(jié)構(gòu)
4.2.1 數(shù)組與鏈表
4.2.2 數(shù)組與鏈表之同
4.2.3 數(shù)組與鏈表之異
4.3 預(yù)留給貨物的固定貨架:內(nèi)存中的數(shù)組
4.3.1 存儲(chǔ)空間
4.3.2 數(shù)組:一塊連續(xù)的存儲(chǔ)空間
4.3.3 數(shù)組的下標(biāo)
4.3.4 數(shù)組中的元素
4.3.5 數(shù)組的元素值
4.3.6 數(shù)組的特性
4.3.7 連續(xù)存儲(chǔ)惹的禍
4.4 見(jiàn)縫插針地?cái)[放貨物:內(nèi)存中的鏈表
4.4.1 鏈表
4.4.2 鏈表的編輯
4.5 數(shù)據(jù)結(jié)構(gòu)的特性和發(fā)展
4.5.1 特性各異的鏈表與數(shù)組
4.5.2 數(shù)據(jù)結(jié)構(gòu)的發(fā)展

第5章 復(fù)雜一些的數(shù)據(jù)結(jié)構(gòu):圖和樹(shù)
5.1 圖
5.1.1 圖的定義和分類(lèi)
5.1.2 相關(guān)概念和算法
5.2 樹(shù)
5.2.1 樹(shù)的定義
5.2.2 二叉樹(shù)
5.3 遍歷算法
5.3.1 樹(shù)的遍歷和圖的遍歷
5.3.2 二叉樹(shù)的深度優(yōu)先遍歷算法
5.3.3 二叉樹(shù)的廣度優(yōu)先遍歷算法
5.4 圖和樹(shù)的現(xiàn)實(shí)意義
5.4.1 圖的抽象
5.4.2 樹(shù)的抽象
5.5 圖和樹(shù)
5.5.1 樹(shù)是圖的真子集
5.5.2 樹(shù)比圖更加嚴(yán)謹(jǐn)

第6章 第一行Python代碼
6.1 跟你的計(jì)算機(jī)聊天:編程語(yǔ)言
6.1.1 什么是編程語(yǔ)言
6.1.2 從低級(jí)語(yǔ)言到高級(jí)語(yǔ)言
6.1.3 編譯和解釋
6.2 直觀感受不同的編程語(yǔ)言
6.3 一條可愛(ài)的小蟒蛇:Python語(yǔ)言
6.3.1 主流編程語(yǔ)言
6.3.2 為什么選擇Python
6.3.3 Python的特性
6.3.4 結(jié)合數(shù)組與鏈表的優(yōu)點(diǎn)的列表
6.4 Python的編輯、運(yùn)行環(huán)境
6.4.1 順序安裝
6.4.2 創(chuàng)建項(xiàng)目
6.4.3 開(kāi)始編寫(xiě)第一個(gè)程序
6.5 第一個(gè)Python程序:讓Python小蟒蛇動(dòng)起來(lái)
6.5.1 你好世界
6.5.2 運(yùn)行Python程序的幾種方式
6.5.3 編程語(yǔ)言的基本概念
6.5.4 Python中的print()函數(shù)

第7章 開(kāi)始用Python語(yǔ)言編寫(xiě)程序
7.1 數(shù)據(jù)值和數(shù)據(jù)類(lèi)型
7.1.1 數(shù)據(jù)的抽象和具象含義
7.1.2 數(shù)據(jù)類(lèi)型
7.2 標(biāo)識(shí)符
7.3 字面量、變量和常量
7.4 變量賦值
7.4.1 賦值的方式
7.4.2 賦值前無(wú)須聲明類(lèi)型
7.4.3 賦值后不能隱性轉(zhuǎn)換類(lèi)型
7.5 Python中的數(shù)組
7.5.1 邏輯上的數(shù)組
7.5.2 列表和元素
7.5.3 列表的賦值和復(fù)制
7.6 Python中的流程控制
7.6.1 用縮進(jìn)劃分代碼塊
7.6.2 關(guān)鍵字
7.6.3 Python中的3種控制結(jié)構(gòu)
7.6.4 不同類(lèi)型結(jié)構(gòu)的嵌套

第8章 實(shí)現(xiàn)第一個(gè)算法并衡量其優(yōu)劣
8.1 從最簡(jiǎn)單的算法開(kāi)始學(xué):順序查找
8.1.1 什么是查找算法
8.1.2 查找算法的要素
8.1.3 順序查找
8.2 順序查找的數(shù)據(jù)結(jié)構(gòu)和控制流程
8.2.1 數(shù)據(jù)結(jié)構(gòu)
8.2.2 控制流程
8.3 用Python實(shí)現(xiàn)順序查找算法
8.3.1 用變量和賦值重繪流程圖
8.3.2 代碼實(shí)現(xiàn)
8.4 用for語(yǔ)句實(shí)現(xiàn)順序查找算法
8.4.1 Python循環(huán)關(guān)鍵字:for和while
8.4.2 用for循環(huán)實(shí)現(xiàn)順序查找算法
8.5 如何衡量算法的性能
8.5.1 時(shí)間復(fù)雜度
8.5.2 常見(jiàn)算法的時(shí)間復(fù)雜度
8.5.3 空間復(fù)雜度

第9章 簡(jiǎn)單但有用的經(jīng)典查找算法
9.1 猜數(shù)游戲
9.1.1 游戲規(guī)則
9.1.2 不限制猜測(cè)次數(shù)的游戲的必勝攻略
9.1.3 限制猜測(cè)次數(shù)的猜數(shù)游戲
9.2 從“挨著找”到“跳著找”
9.3 二分查找:從原理到形式化描述
9.3.1 二分查找的原理
9.3.2 結(jié)構(gòu)化的自然語(yǔ)言描述——流程圖
9.3.3 形式化描述第一步——變量和賦值
9.4 二分查找的編程實(shí)現(xiàn)
9.4.1 形式化流程控制
9.4.2 從流程圖到代碼
9.5 二分查找的性能
9.5.1 二分查找的時(shí)間復(fù)雜度
9.5.2 二分查找的空間復(fù)雜度

第10章 程序中的函數(shù)
10.1 計(jì)算機(jī)領(lǐng)域的函數(shù)
10.1.1 編程中的函數(shù)
10.1.2 函數(shù)的定義
10.1.3 函數(shù)的調(diào)用
10.1.4 二分查找函數(shù)
10.2 函數(shù)的作用
10.2.1 重用
10.2.2 抽象和封裝
10.2.3 從程序之外獲得數(shù)據(jù)
10.3 函數(shù)的參數(shù)
10.3.1 函數(shù)的參數(shù)及其值的變化
10.3.2 Python的函數(shù)參數(shù)傳遞
10.3.3 函數(shù)參數(shù)問(wèn)題的簡(jiǎn)化理解

第11章 編程實(shí)現(xiàn)猜數(shù)游戲
11.1 用Python實(shí)現(xiàn)猜數(shù)游戲
11.1.1 猜數(shù)游戲與二分查找
11.1.2 編寫(xiě)猜數(shù)游戲攻擊者輔助程序
11.2 修改后的猜數(shù)小助手為什么輸了
11.3 Bug
11.4 Bug的天敵——Debug
11.4.1 什么是Debug
11.4.2 常用Debug方法:打印變量中間值
11.5 和Bug斗智斗勇
11.5.1 Bug的嚴(yán)重性
11.5.2 產(chǎn)生Bug的原因
11.5.3 防止Bug產(chǎn)生危害的方法

第12章 二分查找的變形
12.1 二分查找變形記:重復(fù)數(shù)列二分查找
12.1.1 包含重復(fù)元素?cái)?shù)列的二分查找
12.1.2 包含重復(fù)元素?cái)?shù)列的二分查找的變形
12.2 讓變形更高效:與經(jīng)典二分查找相同的時(shí)間復(fù)雜度
12.2.1 包含重復(fù)元素?cái)?shù)列的二分查找的時(shí)間復(fù)雜度
12.2.2 時(shí)間復(fù)雜度的計(jì)算
12.2.3 包含重復(fù)元素?cái)?shù)列的二分查找的O(log(n))算法
12.3 二分查找再變形:旋轉(zhuǎn)數(shù)列二分查找
12.3.1 有序數(shù)列的旋轉(zhuǎn)
12.3.2 不包含重復(fù)元素旋轉(zhuǎn)數(shù)列的二分查找
12.3.3 算法實(shí)現(xiàn)
12.3.4 代碼優(yōu)化
12.4 包含重復(fù)元素旋轉(zhuǎn)數(shù)列的二分查找

第13章 認(rèn)識(shí)排序算法
13.1 處處可見(jiàn)的排行榜
13.1.1 什么是排序
13.1.2 排序算法的江湖地位
13.1.3 無(wú)處不在的排行榜
13.2 排序算法的分類(lèi)
13.2.1 排序算法的分類(lèi)方式
13.2.2 比較排序
13.2.3 比較排序的局限和優(yōu)勢(shì)
13.3 排序算法的基本操作:兩兩交換數(shù)組中的元素
13.3.1 查找算法和排序算法
13.3.2 兩兩交換數(shù)組中的元素
13.3.3 swap()函數(shù)
13.3.4 沒(méi)有返回值的swap()函數(shù)

第14章 幾種簡(jiǎn)單排序算法
14.1 撲克牌游戲
14.1.1 用撲克牌做一個(gè)小游戲
14.1.2 排序要解決的問(wèn)題
14.1.3 基于直覺(jué)的排序算法
14.2 選擇排序
14.2.1 算法原理
14.2.2 數(shù)據(jù)結(jié)構(gòu)
14.2.3 算法步驟
14.2.4 編程實(shí)現(xiàn)
14.3 起泡排序
14.3.1 歷史
14.3.2 算法原理
14.3.3 算法步驟
14.3.4 編程實(shí)現(xiàn)
14.3.5 算法優(yōu)化
14.4 插入排序
14.4.1 算法原理:又見(jiàn)撲克牌
14.4.2 在數(shù)組中插入元素
14.4.3 算法步驟
14.4.4 編程實(shí)現(xiàn)
14.5 簡(jiǎn)單排序概述
14.5.1 排序的時(shí)間復(fù)雜度
14.5.2 排序的空間復(fù)雜度
14.5.3 簡(jiǎn)單排序算法性能總結(jié)

第15章 必須掌握的排序算法
15.1 快速排序
15.1.1 一個(gè)“笑話”
15.1.2 算法原理
15.1.3 算法的江湖地位
15.1.4 算法步驟
15.2 快速排序的時(shí)間復(fù)雜度
15.2.1 時(shí)間復(fù)雜度的計(jì)算
15.2.2 最佳時(shí)間復(fù)雜度
15.2.3 最差時(shí)間復(fù)雜度
15.2.4 平均時(shí)間復(fù)雜度
15.2.5 理解快速排序的平均時(shí)間復(fù)雜度
15.3 快速排序的空間復(fù)雜度
15.3.1 簡(jiǎn)單的分區(qū)函數(shù)
15.3.2 優(yōu)化分區(qū)函數(shù)
15.4 解讀分區(qū)算法源代碼
15.4.1 “人肉計(jì)算機(jī)”法
15.4.2 打印解讀法
15.5 編程實(shí)現(xiàn)快速排序算法
15.5.1 分治策略
15.5.2 快速排序的分與治
15.5.3 編程實(shí)現(xiàn)快速排序算法

第16章 遞歸實(shí)現(xiàn)快速排序
16.1 遞歸:像“貪吃蛇”一樣“吃掉”自己
16.1.1 歷史悠久的概念
16.1.2 無(wú)效遞歸
16.1.3 有效遞歸
16.1.4 分形
16.1.5 斐波那契數(shù)列
16.2 遞歸函數(shù)
16.2.1 遞歸和分治
16.2.2 遞歸函數(shù)
16.2.3 最簡(jiǎn)單的遞歸函數(shù)
16.2.4 Python 限制遞歸深度
16.2.5 限制運(yùn)行次數(shù)的遞歸函數(shù)
16.2.6 遞歸實(shí)現(xiàn)斐波那契數(shù)的計(jì)算
16.3 實(shí)現(xiàn)遞歸式快速排序
16.3.1 遞歸式快速排序的原理
16.3.2 遞歸式快速排序的編程實(shí)現(xiàn)
16.3.3 算法性能
16.4 測(cè)試算法程序
16.4.1 構(gòu)造測(cè)試數(shù)據(jù)集
16.4.2 安裝 pip 和用 pip 安裝模塊
16.4.3 用生成數(shù)據(jù)測(cè)試快速排序
16.4.4 分區(qū)函數(shù)帶來(lái)的差異

第17章 算法精進(jìn)
17.1 如何算學(xué)會(huì)了一個(gè)算法
17.1.1 以二分查找為例了解“掌握算法的幾個(gè)層次”
17.1.2 依據(jù)掌握的知識(shí)解決問(wèn)題
17.1.3 學(xué)習(xí)算法的誤區(qū)
17.2 學(xué)會(huì)之后——?jiǎng)?chuàng)新
17.3 如何自學(xué)算法
17.3.1 自學(xué)三要素
17.3.2 學(xué)習(xí)材料和內(nèi)容
17.3.3 學(xué)習(xí)目的和深度
17.3.4 學(xué)習(xí)方法
17.3.5 如何閱讀代碼
17.3.6 練習(xí)與實(shí)踐
17.4 說(shuō)說(shuō)刷題


本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)