![](https://img-blog.csdnimg.cn/20210704153039951.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Python 数据结构与算法
文章平均质量分 60
Algorithms and Data Structures in Python
我有两颗糖
你不妨大胆一些,爱一个人,攀一座山,追一个梦。
展开
-
图的遍历算法 —— BFS 和 DFS 的 Python 实现
BFS 和 DFS 是遍历图节点常用的算法考虑下面的图,不考虑边的权重:可以用 字典 来存储,key 为顶点,value 为相邻顶点的列表(如果考虑边的权值,则 value 为包含了边权重的字典):G = { 'A': ['B', 'C', 'G'], 'B': ['A', 'D', 'G', 'E'], 'C': ['A'], 'D': ['B', 'C', 'E'], 'E': ['B', 'D', 'F'], 'F': ['E'], 'G': ['A', 'B']}1.原创 2021-07-06 22:26:55 · 2006 阅读 · 5 评论 -
Python 数据结构 —— 图
1. 图的存储方式1.1 图的存储数据结构图可以用 邻接矩阵 和 邻接表 (Adjacency List)来表示,当边数不多的时候,使用邻接表存储效率更高如存储下面的图:对应的邻接表为:1.2 字典实现邻接表采用字典实现邻接表很方便:2 顶点 Vertex每一个顶点中存储了 顶点信息 + 相邻顶点信息,具有 addNeighbor(), getId(), getWeright() 等方法:class Vertex: def __init__(self, id): self.i原创 2021-07-06 21:43:02 · 3197 阅读 · 2 评论 -
Python数据结构 —— 二叉树
1. Node二叉树是由若干节点构成的树,首先定义节点类在 DataStrctures/BinNode.py 下定义 BinNode(注意 DataStructures 中要有 __init__.py)class BinNode: def __init__(self, data, leftChild=None, rightChild=None): self.data = data self.leftChild = leftChild self.rightChild = rightChi原创 2021-07-06 13:57:19 · 1264 阅读 · 0 评论 -
排序算法:冒泡排序、选择排序和快速排序 —— Python 实现
1. 冒泡排序Python 实现:import timeimport randomdef bubbleSort(alist): for i in range(len(alist)): for j in range(len(alist)-1, i, -1): if alist[j] < alist[j-1]: temp = alist[j] alist[j] = alist[j-1] alist[j-1] = tempa = [random.rando原创 2021-07-05 17:46:38 · 381 阅读 · 1 评论 -
递归与动态规划 —— Python 实现
1. 递归1.1 递归三要素递归 (recursion) 通过自身调用来降低问题的复杂性,利用递归解决问题首先需要确定 3 个子问题:基本问题:最简单的子问题,或称为初始状态状态转移方程:如何从复杂问题向更简单的问题过渡目标问题:需要利用状态转移方程从基本问题到复杂问题1.2 最小钱币数问题最小钱币数是一个找零问题,比如目前有若干 [1, 5, 10] 三种硬币,需要找零 37,则在使用最少钱币的情况下需要 10, 10, 10, 5, 1, 1 共 6 枚硬币使用递归解决该问题:原创 2021-07-05 13:05:21 · 429 阅读 · 2 评论 -
Python 数据结构 —— 链表 LinkList 的实现
1. Node 节点链表的每一个节点都是一个对象,存储了当前节点的数据和下一节点的位置信息(data, next),具有以下方法:Node(), setData, getData, setNext, getNextclass Node: def __init__(self, val): self.data = val self.next = None def getData(self): return self.data def getNext(self): return原创 2021-07-05 01:35:57 · 703 阅读 · 0 评论 -
Pythpn 数据结构 —— queue 和 deque
1. queue队列是一个先进先出 FIFO 的数据结构,有以下方法:q.enque() # 入队列q.deque() # 出队列q.size()q.isEmpty()在 DataStructures 目录下创建 Queue.py 文件,使用 list 构建 queue:class Queue: def __init__(self): self.items = [] def enqueue(self, item): self.items.insert(0, item) d原创 2021-07-05 00:39:23 · 507 阅读 · 0 评论 -
对 Python 变量地址的一些理解
变量Python 中一切都是对象,Python 内置的类包含下面几种:其中只有 list, set 和 dict 三种类型是可以修改的,其他类型不能修改,比如下面的代码会引发错误:a = '00000'a[0] = '5'内存分配首先看下面的代码:a = 5b = 5print(id(a) == id(b))执行结果为 True其中 id() 返回对象的唯一标识符,不同的标识符对应不同地址,但生命周期不重叠的变量的标识符可以相同。也就是说变量 a 和变量 b 是指向同一内存地原创 2021-07-01 20:39:38 · 2665 阅读 · 4 评论 -
Python sort 函数
1. sort 函数函数原型:L.sort(*, key=None, reverse=None)它把 L 原地排序,也就是使用后并不是返回一个有序的序列副本,而是把当前序列变得有序!参数说明:argumentdescription*迭代类型的数据列表key函数类型,比较的原则reverse为 True 时逆序Both list.sort() and sorted() have a key parameter to specify a function原创 2021-07-02 10:38:37 · 7208 阅读 · 6 评论 -
Python 数据结构 —— Stack
1. listPython 内置的 list 类对象的使用很灵活,可以方便地访问修改列表元素:methoddescriptionL.append(x)在 L 尾部添加元素 xL.pop(i)删除位置 i 处的元素并返回,相当于 del L[i],i 默认为 i=len(L)-1L.insert(i, x)在位置 i 处插入元素 xL.remove(x)删除第一个值为 x 的元素,不存在则报错L.count(x)返回元素 x 出现的次数L.sor原创 2021-07-04 15:17:26 · 2951 阅读 · 3 评论