
python版数据结构与算法
一只菜狗
不论工作生活或是感情,双向奔赴才有意义。
展开
-
浅谈Python数据结构(七)--树
最近学习了python数据结构,做一些必要的笔记,一来是对自己学习的知识的巩固,二来对有同样问题的人有参考作用文章目录一 树二 二叉树三 二叉搜索树四 总结一 树1、基本概念树是由结点或顶点和边组成的(可能是非线性的)且不存在着任何环的一种数据结构。没有结点的树称为空(null或empty)树。一棵非空的树包括一个根结点,还(很可能)有多个附加结点,所有结点构成一个多级分层结构。树是由n个节点组成的集合:如果n=0,那么这是一颗空树如果n>0,那么存在一个节点作为树的根.原创 2020-08-24 22:33:42 · 264 阅读 · 0 评论 -
浅谈Python数据结构(六)--哈希表
最近学习了python数据结构,做一些必要的笔记,一来是对自己学习的知识的巩固,二来对有同样问题的人有参考作用文章目录一 定义二 演变过程三 解决冲突的方法四 哈希表的应用五 哈希表模拟set六 总结一 定义哈希表是普通数组概念的推广,是能够根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数(Hash Function),存放记录的数组叫做散列表(Hash Table)。在平均情况下,.原创 2020-08-21 14:55:56 · 510 阅读 · 0 评论 -
浅谈Python数据结构(五)--链表
最近学习了python数据结构,做一些必要的笔记,一来是对自己学习的知识的巩固,二来对有同样问题的人有参考作用文章目录一 单向链表二 双向链表三 顺序表和链表对比四 总结一 单向链表1、定义链表是由一系列节点组成的元素集合。每个节点包含两部分,数据域item和指向下一节点的指针next。通过节点之间的相互连接,最终串联成一个链表。代码实现:class Node: def __init__(self,item): self.item = item # 数据 .原创 2020-08-20 08:33:55 · 376 阅读 · 0 评论 -
浅谈Python数据结构(四)--栈和队列练习之迷宫问题
最近学习了python数据结构,做一些必要的笔记,一来是对自己学习的知识的巩固,二来对有同样问题的人有参考作用文章目录一 情景介绍二 栈实现三 队列实现四 总结一 情景介绍就是给定的点,绕过障碍物,找到一条到达目标点的通路。二 栈实现原理:深度优先搜索,栈里存的是路径。maze = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 1, 0, 0, 0, 1, 0, 1], [1, 0, 0, 1, 0, 0, 0, 1, .原创 2020-08-19 17:54:39 · 619 阅读 · 0 评论 -
浅谈Python数据结构(三)--队列
最近学习了python数据结构,做一些必要的笔记,一来是对自己学习的知识的巩固,二来对有同样问题的人有参考作用文章目录一 基础知识二 循环队列三 Python实现四 总结一 基础知识定义队列是一个数据集合,仅允许在队列的一端进行插入,另一端进行删除特点先进先出 FIFO基本概念队头:进行删除的一端(front),删除动作称为出队队尾:进行插入的一端(rear),插入动作称为入队缺点每个空间域只能利用一次。造成空间极度浪费。并且非常容易越界!二 循环队列针对上述的.原创 2020-08-17 15:47:42 · 472 阅读 · 0 评论 -
浅谈Python数据结构(二)--栈
最近学习了python数据结构,做一些必要的笔记,一来是对自己学习的知识的巩固,二来对有同样问题的人有参考作用文章目录一 基础知识二 Python实现三 使用举例四 总结一 基础知识定义栈是一个数据集合,可以理解为只能在一端进行插入或删除操作的列表特点后进先出 LIFO基本概念栈顶 栈底基本操作进栈:push出栈:pop取栈顶:gettop是否空栈:isempty()二 Python实现简单实现,没有考虑一些复杂的情况。class Stack: def .原创 2020-08-17 11:50:19 · 324 阅读 · 0 评论 -
浅谈Python数据结构(一)--列表
最近学习了python数据结构,做一些必要的笔记,一来是对自己学习的知识的巩固,二来对有同样问题的人有参考作用文章目录一 C数组在内存中的存储二 Python列表与C数组的不同三 Python的列表是怎样实现的四 Python列表常见操作的时间复杂度五 64位和32位机器的区别六 总结一 C数组在内存中的存储开辟一块连续的指定大小的空间来存储指定类型的数据。假设数组的首地址为50,每个浮点数占8个字节那么在查找的时候:a[2] = 50 + 2 * 8二 Python列表与C数组的不.原创 2020-08-17 10:09:40 · 240 阅读 · 0 评论 -
浅谈算法(一)--递归
最近学习了python版算法,做一些必要的笔记,一来是对自己学习的知识的巩固,二来对有同样问题的人有参考作用文章目录一 定义二 举例三 总结一 定义1、定义程序调用自身的编程技巧称为递归。2、特点调用自身结束条件二 举例以汉诺塔问题为例。1、解题思路,当有n个盘子时:把 n-1 个圆盘从A经C移动到B把 n 个圆盘从A移动到C把 n-1 个圆盘从B经A移动到C我们可以发现:其实每次操作,可用的只有两根柱子,也就是说每次只能对两个圆盘进行.原创 2020-08-05 18:10:46 · 258 阅读 · 0 评论 -
浅谈算法--时间复杂度和空间复杂度
最近学习了python版数据结构和算法,做一些必要的笔记,一来是对自己学习的知识的巩固,二来对有同样问题的人有参考作用文章目录一 时间复杂度二 空间复杂度三 常用算法的时间复杂度和空间复杂度四 总结一 时间复杂度1、基本概念(1)时间频度:一个算法执行所耗费的时间,也就是一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)。(2)空间复杂度:一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f.原创 2020-08-05 16:53:19 · 413 阅读 · 0 评论