注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡軟件與程序設計算法第一步(Python版)

算法第一步(Python版)

算法第一步(Python版)

定 價:¥89.00

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

ISBN: 9787121391279 出版時間: 2020-12-01 包裝: 平裝
開本: 16開 頁數(shù): 字數(shù):  

內(nèi)容簡介

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

作者簡介

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

圖書目錄

第1章 認識算法
1.1 算法究竟是什么
1.1.1 廣義的算法
1.1.2 計算機領域的算法
1.2 程序、編程和算法之間的關系
1.2.1 算法與程序
1.2.2 算法與編程
1.2.3 學習算法和編程的用處
1.3 學習算法的深度
1.3.1 掌握算法的5個層次
1.3.2 對應不同層次的講解方法
1.3.3 算法驅(qū)動編程
1.3.4 算法的難點:從原理到實現(xiàn)

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

第3章 計算機是如何運行的
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é)構
3.2 計算機原理淺釋
3.2.1 電子計算機的前世今生
3.2.2 馮·諾依曼結(jié)構
3.2.3 存儲空間的地址和內(nèi)容
3.2.4 一條指令是如何被執(zhí)行的
3.2.5 馮·諾依曼結(jié)構的直觀解釋
3.2.6 馮·諾依曼結(jié)構的應用
3.2.7 馮·諾依曼結(jié)構的瓶頸
3.2.8 哈佛結(jié)構

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

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

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

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

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

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

第10章 程序中的函數(shù)
10.1 計算機領域的函數(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ù)問題的簡化理解

第11章 編程實現(xiàn)猜數(shù)游戲
11.1 用Python實現(xiàn)猜數(shù)游戲
11.1.1 猜數(shù)游戲與二分查找
11.1.2 編寫猜數(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的嚴重性
11.5.2 產(chǎn)生Bug的原因
11.5.3 防止Bug產(chǎn)生危害的方法

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

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

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

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

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

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


本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號