python数据结构与算法
文章平均质量分 93
数据结构与算法python版
68岁爱用飘柔
纵有疾风起,人生不言弃.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
用python实现堆排序
用python实现堆排序前几天,写了用python实现十大经典排序,但是后面三个都是照搬百度,自己也没有很好的理解堆这个数据结构,现在又来埋坑了。什么是堆?堆这种数据结构应用场景非常多,所以还是必须熟练掌握的。在了解堆之前,我们需要了解一下,什么是完全二叉树完全二叉树下面是百度的定义:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。看完这个,是不是有原创 2021-03-21 16:01:56 · 2243 阅读 · 0 评论 -
一篇带你了解动态规划问题
动态规划动态规划是日常算法中经常会用到的一个算法,也是leetcode中霸占困难题最多的狗皮膏药。这篇文章给出多个经典的dp例子,希望能帮助到你。当我第一次听到dp这个名词的时候,是大一有一个同学在上课提出的。那时还是懵懂无知,动态规划这么牛皮的名字我想学!但无奈自己的懒占据上风,现在大三了才来填坑。动态规划其实自我感觉就是一个拖着一个柜子的逆回溯。自我认为,回溯的核心在于这个值选或者不选,如果选该怎么办,是什么推导式。而如果不选该怎么办,又是什么推导式。而动态规划其实也就是一个记住了中间过程答原创 2021-03-10 20:33:11 · 1550 阅读 · 0 评论 -
五大经典算法:回溯问题(python版)
回溯问题(python版)回溯算法:是五大常用算法之一、回溯算法实际上一个类似枚举的搜索尝试过程。主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。再或者简单点说,用来解决一个不知道要递归多少层的循环体。一般步骤:1、 针对所给问题,定义问题的解空间,它原创 2021-03-06 23:13:48 · 4138 阅读 · 4 评论 -
双指针问题(python版)
双指针问题双指针在日常生活中很常见,leetcode中也有许多的题目与之相关。接下来是几个双指针的案例。需要注意的一个点:如果想知道一道题目是否能使用双指针,你就需要去判断,该指针所指向的值,两个是否能进行合理的判断(三数之和中,两个指针所指向的值经过计算与0的比对结果控制指针的走向,而雨水问题中,两个指针所指向的柱子高度较小值于指针值的差的乘积于当前面积的比对结果控制指针走向)下面就是双指针的一些例题:一、三数之和问题1. 题目给你一个包含 n 个整数的数组nums,判断nums中是否存在三个原创 2021-03-05 23:08:49 · 1383 阅读 · 0 评论 -
Python数据结构(四):Python各排序算法简易理解
Python各排序算法简单理解一、冒泡排序基本思路代码实现复杂度二、选择排序基本思路代码实现复杂度三、插入排序基本思路代码实现复杂度四、快速排序基本思路代码实现复杂度无、归并排序基本思路代码实现复杂度六、希尔排序基本思路代码实现复杂度七、总结一、冒泡排序基本思路 最基础的排序方法,给定一个数组,从最后一个元素开始,依次与前面相邻的元素进行比较,如果该元素小于前面的元素,则交换元素位置,重复该步骤,直到到达第一个(也可以从前往后)。然后一次循环。代码实现def bubble_sort(alist原创 2020-11-28 22:56:12 · 402 阅读 · 0 评论 -
python数据结构(三)链表
链表为什么需要链表? 顺序表的构建需要预先知道数据大小来申请存储空间,而在进行扩充时有需要进行数据的迁移,所以使用起来并不是很灵活。 链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。链表的定义 链表是一种常见的基础数据结构,是一种线型表,但不像顺序表一样连续存储数据,而是在每一个结点例存放下一个结点的位置信息(即地址)。一、单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域,一个链接域,这个链接指向下一个节点,而最后一个结点的原创 2020-11-23 22:39:37 · 242 阅读 · 0 评论 -
python数据结构(二)顺序表
内存 我们知道,存储的最小单位为字节,一个字节又是由8位组成,内存就是由无数个字节按照顺序排列起来的。在Python中,所有的值都与内存打交道,例如正常的int类型或者在str类型,并且在32位机子中,一个int类型的值在内存中是由4个字节存储的,即如果你存的是1,那么在内存中,它的位即00000000 00000000 00000000 00000001,并且我们知道,字符串是由一个或多个字符组成的,一个字符在内存中是由一位存储的。顺序表的基本形式 图a表示顺序表的基本形式,数据元素本身原创 2020-11-23 22:38:53 · 370 阅读 · 0 评论 -
Python手撕广度优先遍历
广度优先遍历1.图1.1有向图1.2 无向图2.广度优先遍历3.手撕代码3.1 创建graph表3.2 创建队列3.3创建判断函数3.4 检查代码4.完整代码在谈广度优先遍历之前,我们需要知道图是什么。1.图 图(graph)是表示物件与物件之间关系的数学对象,是图论的基本研究对象,图由节点(node)和边(edge)组成。图分为两种:1.有向图、2.无向图。1.1有向图 有向图就类似于我们去打牌,如果A欠B5元,则有一条线段从A指向B,如果B欠A5元,那么就又有一条线由B指向A,这个5元原创 2020-11-17 20:04:26 · 417 阅读 · 1 评论 -
Python数据结构:collections模块
Collections模块 在Python中,有一个很神奇的库存在:Collections,它提供了一些额外的数据结构,比如:Counter:计数器,用于统计元素的数量OrderedDict:有序字典defaultdict:带有默认类型的字典ChainMap:创建多个可迭代对象的集合。类字典类型namedtuple:可命名元组,通过名字来访问元组元素deque:双向队列,队列头尾都可以放,也都可以取(与单向队列对比,单向队列只能一头放,另一头取)1.__init__.py'''Th原创 2020-11-17 17:22:22 · 454 阅读 · 1 评论 -
python数据结构:一
数据结构与算法(python) 如果将最终写好运行的程序比作战场,程序员表示指挥作战的将军,而我们所写的代码遍是士兵和武器。数据结构和算法就相当于兵法。一、引入如果a+b+c=1000,且a2+b2=c^2(a,b,c为自然数),求a,b,c可能的组合正常思路:枚举法 将a,b,c都从0开始,依次轮流到1000,然后查找出相应每个值即可。for a in range(1001): for b in range(1001): for c in range(1001)原创 2020-08-19 10:15:37 · 422 阅读 · 0 评论
分享