图解算法——使用Python
书籍作者:吴灿铭 |
ISBN:9787302509882 |
书籍语言:简体中文 |
连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 |
下载次数:3883 |
创建日期:2021-02-14 |
发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
内容简介
本书是一本综合讲述数据结构及其算法的入门书,力求简洁、清晰、严谨且易于学习和掌握,并没有追求大而全的数据结构和所有相关的算法,而是选择经典的算法来配合介绍常用的数据结构,包括数组、链表、堆栈、队列以及树和图等。
本书为每个算法及其数据结构均提供了演算的详细图解,并为每个经典的算法都提供了Python语言编写的完整范例程序(包含完整的源代码)。每个范例程序都经过了测试和调试,可以直接在标准的Python解释器中运行,非常适合作为普及型的教科书或自学读物。
作者简介
吴灿铭,现任荣钦科技股份有限公司执行长,美国Rochester Institute of Technology计算机科学研究所毕业,长期从事信息教育及计算机图书写作的工作,计算机图书著作包括计算器概论、数据结构、办公室电子数据处理、互联网等相关题材,并监制过多套游戏以及教学软件的研发。
前言
前 言
如今“程序设计”已经是越来越普及的课程,让人人拥有程序设计的能力已是各所学校信息课程的重点。算法一直是计算机科学专业非常重要的基础课程,从程序设计语言实践的角度而言,算法是有志从事信息技术领域工作的专业人员必须学习的一门基础理论课程。无论你采用哪一种程序设计语言编写程序,所设计的程序能否快速而高效地完成预定的任务,算法都是其中的关键因素。
市面上有许多算法相关的书籍,常会介绍大量的理论或是在书上举例去表达算法的核心概念,虽然有些书写作的笔法轻松,能帮助用户理解各种算法的核心概念,但是这类书缺乏完整的程序设计语言的实现范例,因而对于第一次接触算法的初学者来说,将算法运用于实际应用就成了一大段跨不过去的鸿沟。
为了帮助更多人用比较轻松的方式了解各种算法的重点,包括分治法、递归法、贪心法、动态规划法、迭代法、枚举法、回溯法等,以及应用不同算法所延伸出的重要数据结构(例如数组、链表、堆栈、队列、树形结构、图形、排序、查找、哈希等),本书特别采用丰富的图例来阐述算法的基本概念,并将算法概念进行言简意赅的诠释和举例,同时使用Python语言编程实现算法,以期能将各种算法真正应用在学习者将来的程序设计中。因此,这是一本学习算法的入门教科书。
笔者长期从事信息教育以及专业书籍编写的工作,因而在语句的表达上尽量简洁有力。另外,为了检验各章的学习成果,特别收集了难易度适中的习题,并参阅算法与数据结构课程考试的相关题型,让读者进一步演练与巩固算法的基础知识。然而,一本好的算法教科书,除了内容的完备专业外,更需要有清楚易懂的结构安排及表达方式。希望本书可以帮助读者在轻松的学习氛围下,对算法这门基础理论有比较深刻的认识。
吴灿铭
目录
目 录
第1章 进入算法的世界 1
1.1 生活中到处都是算法 2
1.1.1 算法的定义 3
1.1.2 算法的条件 4
1.1.3 时间复杂度O(f(n)) 6
1.2 常见算法简介 7
1.2.1 分治法 8
1.2.2 递归法 9
1.2.3 贪心法 11
1.2.4 动态规划法 12
1.2.5 迭代法 13
1.2.6 枚举法 14
1.2.7 回溯法 15
【课后习题】 18
第2章 常用的数据结构 19
2.1 认识数据结构 19
2.2 数据结构的种类 22
2.2.1 数组 23
2.2.2 链表 25
2.2.3 堆栈 26
2.2.4 队列 27
2.3 树形结构 28
2.3.1 树的基本观念 29
2.3.2 二叉树 30
2.4 图形结构简介 32
2.5 哈希表 34
【课后习题】 35
第3章 排序算法 36
3.1 认识排序 37
3.2 冒泡排序法 38
3.3 选择排序法 40
3.4 插入排序法 42
3.5 希尔排序法 44
3.6 合并排序法 46
3.7 快速排序法 49
3.8 基数排序法 51
【课后习题】 53
第4章 查找与哈希算法 54
4.1 常见查找算法的介绍 55
4.1.1 顺序查找法 55
4.1.2 二分查找法 56
4.1.3 插值查找法 58
4.2 常见的哈希法简介 60
4.2.1 除留余数法 60
4.2.2 平方取中法 62
4.2.3 折叠法 62
4.2.4 数字分析法 63
4.3 碰撞与溢出问题的处理 64
4.3.1 线性探测法 64
4.3.2 平方探测法 65
4.3.3 再哈希法 66
【课后习题】 67
第5章 数组与链表算法 68
5.1 矩阵 68
5.1.1 矩阵相加算法 69
5.1.2 矩阵相乘 70
5.1.3 转置矩阵 72
5.2 建立单向链表 73
5.2.1 单向链表的连接功能 74
5.2.2 单向链表的节点删除 76
5.2.3 单向链表的反转 79
【课后习题】 82
第6章 堆栈与队列算法 83
6.1 用数组实现堆栈 83
6.2 用链表实现堆栈 85
6.3 汉诺塔问题的求解算法 87
6.4 八皇后问题的求解算法 93
6.5 用数组实现队列 95
6.6 用链表实现队列 98
6.7 双向队列 100
6.8 优先队列 103
【课后习题】 104
第7章 树形结构及其算法 105
7.1 用数组实现二叉树 107
7.2 用链表实现二叉树 109
7.3 二叉树遍历 111
7.4 二叉树节点的查找 115
7.5 二叉树节点的插入 116
7.6 二叉树节点的删除 118
7.7 堆积树排序法 121
【课后习题】 127
第8章 图的数据结构及其算法 129
8.1 图的遍历 129
8.1.1 深度优先遍历法 130
8.1.2 广度优先遍历法 132
8.2 最小生成树(MST) 136
8.2.1 Prim算法 136
8.2.2 Kruskal算法 138
8.3 图的最短路径法 142
8.3.1 Dijkstra算法与 A* 算法 143
8.3.2 Floyd算法 148
【课后习题】 152
附录 习题和解答 155
短评
简直就是山楂山楂是南水北调办的吧
2018-11-08 12:52:04