-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調優實踐之路
-
>
第一行代碼Android
-
>
JAVA持續交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
算法第一步(Python版) 版權信息
- ISBN:9787121391279
- 條形碼:9787121391279 ; 978-7-121-39127-9
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
算法第一步(Python版) 本書特色
適讀人群 :青少年計算機編程愛好者,及計算機相關專業初學者軟件開發就是通過各種算法實現具體的業務邏輯,把繁雜的過程抽象化、可計算化的過程,了解基本原理,掌握數據結構和6大經典算法,手寫代碼實現,鍛煉思維肌肉,讓大腦靈活地轉起來。 即使沒有任何程序設計基礎的讀者也可以閱讀本書,書中同步講解兩方面內容:使用Python 語言編寫程序,基礎經典算法。由編程學算法,以算法促編程。 用妙趣橫生的插畫描述復雜的原理的算法框架。
算法第一步(Python版) 內容簡介
本書針對零基礎的初學者,以算法為核心,以編程為手段,很終的目的是培養讀者的計算思維。本書涉及大學計算機課程中程序設計、數據結構和計算機原理等多個領域的知識,從程序、編程和算法是什么入手;然后重點介紹了控制流程和數據結構,并針對數據結構的和實現剖析了現代電子計算機的基礎:二進制和馮·諾依曼結構;很后重點介紹了6大經典算法的原理、過程和編程實現,以及其背后的算法策略。為了使零基礎的讀者能夠上手編程,本書從操作角度闡述了編程工具的使用和程序編寫、運行、調試的過程。
算法第一步(Python版) 目錄
第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 算法驅動編程
1.3.4 算法的難點:從原理到實現
第2章 萬事的抽象:控制流程
2.1 認識流程
2.1.1 順序
2.1.2 順序結構
2.1.3 條件(分支)
2.1.4 條件(分支)結構
2.1.5 循環(迭代)
2.1.6 循環(迭代)結構
2.2 用簡單的結構表達復雜的過程:控制結構的排列和嵌套
2.2.1 什么是流程圖
2.2.2 極簡版流程圖符號表
2.2.3 *簡單的流程圖
2.3 流程圖的粒度與嵌套
2.3.1 粒度
2.3.2 嵌套
2.3.3 條件結構和循環結構的嵌套
2.3.4 粒度均衡的流程圖
第3章 計算機是如何運行的
3.1 數據
3.1.1 信息數字化
3.1.2 數據化與數據
3.1.3 數據的組織
3.1.4 數據結構
3.2 計算機原理淺釋
3.2.1 電子計算機的前世今生
3.2.2 馮·諾依曼結構
3.2.3 存儲空間的地址和內容
3.2.4 一條指令是如何被執行的
3.2.5 馮·諾依曼結構的直觀解釋
3.2.6 馮·諾依曼結構的應用
3.2.7 馮·諾依曼結構的瓶頸
3.2.8 哈佛結構
第4章 萬物的抽象:數據結構
4.1 認識數據結構
4.1.1 數組
4.1.2 鏈表
4.2 直觀理解數據結構
4.2.1 數組與鏈表
4.2.2 數組與鏈表之同
4.2.3 數組與鏈表之異
4.3 預留給貨物的固定貨架:內存中的數組
4.3.1 存儲空間
4.3.2 數組:一塊連續的存儲空間
4.3.3 數組的下標
4.3.4 數組中的元素
4.3.5 數組的元素值
4.3.6 數組的特性
4.3.7 連續存儲惹的禍
4.4 見縫插針地擺放貨物:內存中的鏈表
4.4.1 鏈表
4.4.2 鏈表的編輯
4.5 數據結構的特性和發展
4.5.1 特性各異的鏈表與數組
4.5.2 數據結構的發展
第5章 復雜一些的數據結構:圖和樹
5.1 圖
5.1.1 圖的定義和分類
5.1.2 相關概念和算法
5.2 樹
5.2.1 樹的定義
5.2.2 二叉樹
5.3 遍歷算法
5.3.1 樹的遍歷和圖的遍歷
5.3.2 二叉樹的深度優先遍歷算法
5.3.3 二叉樹的廣度優先遍歷算法
5.4 圖和樹的現實意義
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 結合數組與鏈表的優點的列表
6.4 Python的編輯、運行環境
6.4.1 順序安裝
6.4.2 創建項目
6.4.3 開始編寫**個程序
6.5 **個Python程序:讓Python小蟒蛇動起來
6.5.1 你好世界
6.5.2 運行Python程序的幾種方式
6.5.3 編程語言的基本概念
6.5.4 Python中的print()函數
第7章 開始用Python語言編寫程序
7.1 數據值和數據類型
7.1.1 數據的抽象和具象含義
7.1.2 數據類型
7.2 標識符
7.3 字面量、變量和常量
7.4 變量賦值
7.4.1 賦值的方式
7.4.2 賦值前無須聲明類型
7.4.3 賦值后不能隱性轉換類型
7.5 Python中的數組
7.5.1 邏輯上的數組
7.5.2 列表和元素
7.5.3 列表的賦值和復制
7.6 Python中的流程控制
7.6.1 用縮進劃分代碼塊
7.6.2 關鍵字
7.6.3 Python中的3種控制結構
7.6.4 不同類型結構的嵌套
第8章 實現**個算法并衡量其優劣
8.1 從*簡單的算法開始學:順序查找
8.1.1 什么是查找算法
8.1.2 查找算法的要素
8.1.3 順序查找
8.2 順序查找的數據結構和控制流程
8.2.1 數據結構
8.2.2 控制流程
8.3 用Python實現順序查找算法
8.3.1 用變量和賦值重繪流程圖
8.3.2 代碼實現
8.4 用for語句實現順序查找算法
8.4.1 Python循環關鍵字:for和while
8.4.2 用for循環實現順序查找算法
8.5 如何衡量算法的性能
8.5.1 時間復雜度
8.5.2 常見算法的時間復雜度
8.5.3 空間復雜度
第9章 簡單但有用的經典查找算法
9.1 猜數游戲
9.1.1 游戲規則
9.1.2 不限制猜測次數的游戲的必勝攻略
9.1.3 限制猜測次數的猜數游戲
9.2 從“挨著找”到“跳著找”
9.3 二分查找:從原理到形式化描述
9.3.1 二分查找的原理
9.3.2 結構化的自然語言描述——流程圖
9.3.3 形式化描述**步——變量和賦值
9.4 二分查找的編程實現
9.4.1 形式化流程控制
9.4.2 從流程圖到代碼
9.5 二分查找的性能
9.5.1 二分查找的時間復雜度
9.5.2 二分查找的空間復雜度
第10章 程序中的函數
10.1 計算機領域的函數
10.1.1 編程中的函數
10.1.2 函數的定義
10.1.3 函數的調用
10.1.4 二分查找函數
10.2 函數的作用
10.2.1 重用
10.2.2 抽象和封裝
10.2.3 從程序之外獲得數據
10.3 函數的參數
10.3.1 函數的參數及其值的變化
10.3.2 Python的函數參數傳遞
10.3.3 函數參數問題的簡化理解
第11章 編程實現猜數游戲
11.1 用Python實現猜數游戲
11.1.1 猜數游戲與二分查找
11.1.2 編寫猜數游戲攻擊者輔助程序
11.2 修改后的猜數小助手為什么輸了
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 產生Bug的原因
11.5.3 防止Bug產生危害的方法
第12章 二分查找的變形
12.1 二分查找變形記:重復數列二分查找
12.1.1 包含重復元素數列的二分查找
12.1.2 包含重復元素數列的二分查找的變形
12.2 讓變形更高效:與經典二分查找相同的時間復雜度
12.2.1 包含重復元素數列的二分查找的時間復雜度
12.2.2 時間復雜度的計算
12.2.3 包含重復元素數列的二分查找的O(log(n))算法
12.3 二分查找再變形:旋轉數列二分查找
12.3.1 有序數列的旋轉
12.3.2 不包含重復元素旋轉數列的二分查找
12.3.3 算法實現
12.3.4 代碼優化
12.4 包含重復元素旋轉數列的二分查找
第13章 認識排序算法
13.1 處處可見的排行榜
13.1.1 什么是排序
13.1.2 排序算法的江湖地位
13.1.3 無處不在的排行榜
13.2 排序算法的分類
13.2.1 排序算法的分類方式
13.2.2 比較排序
13.2.3 比較排序的局限和優勢
13.3 排序算法的基本操作:兩兩交換數組中的元素
13.3.1 查找算法和排序算法
13.3.2 兩兩交換數組中的元素
13.3.3 swap()函數
13.3.4 沒有返回值的swap()函數
第14章 幾種簡單排序算法
14.1 撲克牌游戲
14.1.1 用撲克牌做一個小游戲
14.1.2 排序要解決的問題
14.1.3 基于直覺的排序算法
14.2 選擇排序
14.2.1 算法原理
14.2.2 數據結構
14.2.3 算法步驟
14.2.4 編程實現
14.3 起泡排序
14.3.1 歷史
14.3.2 算法原理
14.3.3 算法步驟
14.3.4 編程實現
14.3.5 算法優化
14.4 插入排序
14.4.1 算法原理:又見撲克牌
14.4.2 在數組中插入元素
14.4.3 算法步驟
14.4.4 編程實現
14.5 簡單排序概述
14.5.1 排序的時間復雜度
14.5.2 排序的空間復雜度
14.5.3 簡單排序算法性能總結
第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 簡單的分區函數
15.3.2 優化分區函數
15.4 解讀分區算法源代碼
15.4.1 “人肉計算機”法
15.4.2 打印解讀法
15.5 編程實現快速排序算法
15.5.1 分治策略
15.5.2 快速排序的分與治
15.5.3 編程實現快速排序算法
第16章 遞歸實現快速排序
16.1 遞歸:像“貪吃蛇”一樣“吃掉”自己
16.1.1 歷史悠久的概念
16.1.2 無效遞歸
16.1.3 有效遞歸
16.1.4 分形
16.1.5 斐波那契數列
16.2 遞歸函數
16.2.1 遞歸和分治
16.2.2 遞歸函數
16.2.3 *簡單的遞歸函數
16.2.4 Python 限制遞歸深度
16.2.5 限制運行次數的遞歸函數
16.2.6 遞歸實現斐波那契數的計算
16.3 實現遞歸式快速排序
16.3.1 遞歸式快速排序的原理
16.3.2 遞歸式快速排序的編程實現
16.3.3 算法性能
16.4 測試算法程序
16.4.1 構造測試數據集
16.4.2 安裝 pip 和用 pip 安裝模塊
16.4.3 用生成數據測試快速排序
16.4.4 分區函數帶來的差異
第17章 算法精進
17.1 如何算學會了一個算法
17.1.1 以二分查找為例了解“掌握算法的幾個層次”
17.1.2 依據掌握的知識解決問題
17.1.3 學習算法的誤區
17.2 學會之后——創新
17.3 如何自學算法
17.3.1 自學三要素
17.3.2 學習材料和內容
17.3.3 學習目的和深度
17.3.4 學習方法
17.3.5 如何閱讀代碼
17.3.6 練習與實踐
17.4 說說刷題
算法第一步(Python版) 作者簡介
葉蒙蒙,微軟資深算法工程師,科普寫手。近二十年間積累了大量用C/C++, Java, C# 和 Python開發各類軟件的經驗,深刻體會到編程的核心在于算法。本著幫助更多朋友了解、學習計算機算法,掌握計算思維的初心,寫作此書。
- >
上帝之肋:男人的真實旅程
- >
推拿
- >
我與地壇
- >
企鵝口袋書系列·偉大的思想20:論自然選擇(英漢雙語)
- >
名家帶你讀魯迅:故事新編
- >
我從未如此眷戀人間
- >
姑媽的寶刀
- >
李白與唐代文化