用python语言讲解数据结构与算法总述(一)

  关于数据结构与算法讲解的书籍很多,但是用python语言去实现的不是很多,最近有幸看到一本这样的书籍,由Brad Miller and David
Ranum编写的《Problem Solving with Algorithms and Data Structures Using
Python》,地址为:http://interactivepython.org/runestone/static/pythonds/index.html是英文的,写的不错,里面代码的实现也很详细,很多有趣的例子,于是想把它翻译成中文,方便大家的阅读,也可以再温习一下这本书。后续博客会陆续更新这本书的翻译内容,本篇先把要写的所有的内容框架写下来,以便大家有个整体的认识。

========================================================正式内容开始分隔线

用Python讲解数据结构与算法


(Problem Solving with Algorithms and Data
Structures Using Python)

一、简介(Introduction)

1.学习目标(Objectives)

2.开始学习(Getting
Started)

3.什么是计算机科学(What is
Computer Science)

4.Python基本知识回顾(Review of Basic Python)

5.总结(Summary)

6.关键术语(Key
Terms)

7.问题讨论(Discussion
Questions)

8.习题练习(Programming
Exercises)

二、算法分析(Analysis)

1.学习目标(Objectives)

2.什么是算法分析(What is
Algorithm Analysis)

3.Python内置数据结构性能分析(Performance of Python Data
Structures)

4.总结(Summary)

5.关键术语(Key
Terms)

6.问题讨论(Discussion
Questions)

7.习题练习(Programming
Exercises)

三、基本数据结构(Basic Data
Structures)

1.学习目标(Objectives)

2.什么是线性数据结构(What
Are Linear Structures)

3.栈(Stacks)

4.队列(Queues)

5.双端队列(Deques)

6.列表(Lists)

7.总结(Summary)

8.关键术语(Key
Terms)

9.问题讨论(Discussion
Questions)

10.习题练习(Programming
Exercises)

四、递归(Recursion)

1.学习目标(Objectives)

2.什么是递归(What is
Recursion)

3.栈帧实现递归(Stack
Frames:Implementing Recursion)

4.可视化递归(Visualizing
Recursion)

5.复杂递归问题(Complex
Recursive Problems)

6.迷宫问题(Exploring a
Maze)

7.动态规划(Dynamic
Programming)

8.总结(Summary)

9.关键术语(Key
Terms)

10.问题讨论(Discussion
Questions)

11.习题练习(Programming
Exercises)

五、排序与检索(Sorting and
Searching)

1.学习目标(Objectives)

2.检索(Searching)

3.各种排序算法(Sorting)

4.总结(Summary)

5.关键术语(Key
Terms)

6.问题讨论(Discussion
Questions)

7.习题练习(Programming
Exercises)

六、树与树相关的算法(Trees and Tree
Algorithms)

1.学习目标(Objectives)

2.树相关实例(Examples of
Trees)

3.树相关术语与定义(Vocabulary and Definitions)

4.实现树结构(Implementation)

5.二叉树(Binary Tree
Aplications)

6.堆与优先队列(Priority
Queues with Binary Heaps)

7.二叉搜索树(Binary
Search Trees)

8.平衡二叉搜索树(Balanced
Binary Search Trees)

9.总结(Summary)

10.关键术语(Key
Terms)

11.问题讨论(Discussion
Questions)

12.习题练习(Programming
Exercises)

七、图与图相关的算法(Graphs and Graph
Algorithms)

1.学习目标(Objectives)

2.图相关术语与定义(Vocabulary and Definitions)

3.图抽象数据结构(The Graph
Abstract Data Type)

4.广度优先搜索(Breadth
First Search)

5.深度优先搜索(Depth
First Search)

6.拓扑排序(Topological
Sorting)

7.强连通分量(Strongly
Connected Components)

8.最短路径问题(Shortest
Path Problems)

9.总结(Summary)

10.关键术语(Key
Terms)

11.问题讨论(Discussion
Questions)

12.习题练习(Programming
Exercises)

时间: 2024-08-06 03:45:23

用python语言讲解数据结构与算法总述(一)的相关文章

[0x01 用Python讲解数据结构与算法] 关于数据结构和算法还有编程

忍耐和坚持虽是痛苦的事情,但却能渐渐地为你带来好处. ——奥维德 一.学习目标 · 回顾在计算机科学.编程和问题解决过程中的基本知识: · 理解“抽象”在问题解决过程中的重要作用: · 理解并实现抽象数据结构: · 复习Python编程语言 二.写在前面 自第一台电子计算机使用线路和开关传达人类的指令以来,我们编程的思考方式有了很大的改变,在很多方面,计算机技术的发展为计算机科学家提供了众多的工具和平台去实现他们的想法.高性能理器,高速网络和大内存使得计算机研究者必须掌握在这样复杂的螺旋式通道中

python 下的数据结构与算法---1:让一切从无关开始

我也忘了大概多久了,好像是三周多一点,终于把Data Structure and Algorithms with python以及 Problem Solving with  Algorithms and DataStructures看完了(图那部分没仔细看,太难太费时间,毕业设计开始了,有点忙).[github地址,包含了那两本书带笔记版以及下面零的代码] 所以啦,这作为第一篇总结笔记就从点无关的开始吧(也就是这两本书中提到的python相关但是与数据结构和算法无关的东东) 目录: 零:有些什

Python 常用查找数据结构及算法

一.基本概念 二.无序表查找 三.有序表查找 3.1 二分查找(Binary Search) 3.2 插值查找 3.3 斐波那契查找 四.线性索引查找 4.1 稠密索引 4.2 分块索引 4.3 倒排索引 五.二叉排序树 六. 平衡二叉树 七.多路查找树(B树) 7.1 2-3树 7.2 2-3-4树 7.3 B树 7.4 B+树 八.散列表(哈希表) 8.1 散列函数的构造方法 8.2 处理散列冲突 8.3 散列表查找实现 8.4 散列表查找性能分析 参考书目<大话数据结构> 一.基本概念

Python学习笔记——数据结构和算法(一)

1.解压序列赋值给多个变量 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量. 唯一的前提就是变量的数量必须跟序列元素的数量是一样的. >>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]>>> name, shares, price, date = data >>> name, shares, price, (year, mon, day) = data >>>

python进阶(数据结构和算法[二])

找到最大或者最小的N个元素 heapq模块有两个函数–nlargest()和nsmallest()正好能解决我们的问题. >>> print(heapq.nlargest(3, nums)) [43, 23, 8] >>> print(heapq.nsmallest(3,nums)) [-1, 1, 2] #another import heapq portfolio = [ {'name': 'IBM', 'shares': 100, 'price': 91.1},

【 python 学习笔记 -- 数据结构与算法 】哈希表 Implementation of a Hash Table

Python内建的字典就是用 hash table实现的.这里我们只是通过实现自己的hash table来加深对hash table 和hash functions的理解. [ 概念1: Mapping (映射)] 字典通过键(Key)来索引.一个key对应一个存储的value.任意不可变的数据类型均可作为key. [ 概念2:Hash Table (哈希表)] Hash Table根据key直接访问在内存存储位置的数据结构,因而加快了查找速度 (O(1)). 下图是一个size为11的空的Ha

【 python 学习笔记 -- 数据结构与算法 】冒泡排序 Bubble sort

推荐一个可视化的网站 [ Visual Algo ]: URL= 'https://visualgo.net/en/sorting' 这个网站给出了各种排序算法的原理和过程,通过动态形式直观得展现出来.另外还给出了相关的pseudo-code,以及具体执行到code的哪一步. [冒泡排序] 需要重复地走访需要排序的数列.走访过程中比较相邻两个items的大小,如果顺序不对,则交换两个items. 因此,每完成一次走访(pass),需要排序的部分的最大值就会移动到合适的位置. 这个过程看起来就像每

Python实现的数据结构与算法之快速排序详解

一.概述 快速排序(quick sort)是一种分治排序算法.该算法首先 选取 一个划分元素(partition element,有时又称为pivot):接着重排列表将其 划分 为三个部分:left(小于划分元素pivot的部分).划分元素pivot.right(大于划分元素pivot的部分),此时,划分元素pivot已经在列表的最终位置上:然后分别对left和right两个部分进行 递归排序. 其中,划分元素的 选取 直接影响到快速排序算法的效率,通常选择列表的第一个元素或者中间元素或者最后一

【 python 学习笔记 -- 数据结构与算法 】插入排序 Insertion Sort

[插入排序]:每次保证列表最左端子序列是排好顺序的,然后取下一个元素,扫描其左端的子序列,将其中大于目标元素的元素右移一个位置,直到找到合适的位置将目标元素插入子序列中.逐步增大排序完成的sublist的长度,最终完成整个列表的排序 算法思路如下: 1. 列表最左边第一个元素认为已经排序好了 2. 取下一个元素(目标元素),在它前面已经排序完成的子序列中从后向前扫描 3. 如果子序列中被扫描的当前元素大于目标元素,则将当前元素右移一个位置 4. 重复第3步,直到被扫描的元素小于或等于目标元素 5