数据结构与算法
文章平均质量分 77
快乐虫
这个作者很懒,什么都没留下…
展开
-
数据结构和算法分析(六)--树(1)--树的概念和实现
文章目录一、树的定义二、树的相关概念三、树的实现(1)列表之列表(2)节点与引用树广泛应用于计算机科学的多个领域,从操作系统、图形学、数据库到计算机网络。作为数据结构的树和现实世界中的树有很多共同之处,二者皆有根、枝、叶,不同之处在于,前者的根在顶部,而叶在底部。一、树的定义定义一:树由节点及连接节点的边构成。树有以下属性有一个根节点;除根节点外,其他每个节点都与其唯一的父节点相连;从根节点到其他每个节点都有且仅有一条路径;如果每个节点最多有两个节点,我们就称这样的树为二叉树定义二:一棵原创 2021-08-19 16:15:06 · 468 阅读 · 0 评论 -
数据结构与算法分析(五) -- 排序
本系列为《Python数据结构与算法分析》第二版学习笔记,作者:布拉德利.米勒;戴维.拉努姆。译:吕能, 刁寿钧文章目录1、冒泡排序2、选择排序3、插入排序4、希尔排序5、归并排序6、快速排序排序是指将集合中的元素按某种顺序排列的过程。与搜索算法类似,排序算法的效率与待处理元素的数目相关。1、冒泡排序冒泡排序多次遍历列表,它比较相邻的元素,将不和顺序的交换,每一轮遍历都将下一个最大值放在正确的位置上。特别的,如果在一轮遍历中没有发生元素交换,就可以确定列表已经有序,此时可以终止遍历。冒泡排序函数原创 2021-08-15 16:07:15 · 305 阅读 · 0 评论 -
数据结构与算法分析(五)--散列
本系列为《Python数据结构与算法分析》第二版学习笔记,作者:布拉德利.米勒;戴维.拉努姆。文章目录1、散列2、处理冲突3、实现映射抽象数据类型1、散列散列表是元素的集合,其中的元素以一种便于查找的方式存储。散列表中的每个位置通常被称为槽。散列函数将散列表中的元素与其所属位置对应起来。槽的占用率被称作载荷因子,载荷因子 = 元素个数 / 散列表大小。在散列函数确定元素位置的时候,有时候它会将两个元素放入同一个槽,这种情况被称作冲突,也叫碰撞。给定一个元素集合,能将每个元素映射到不同的槽,这种散原创 2021-08-15 14:38:33 · 708 阅读 · 0 评论 -
数据结构与算法分析(五)--搜索
搜索是指从元素集合中找到某个特定元素的算法过程,搜索过程通常返回True或False。1、顺序搜索原创 2021-08-14 15:58:12 · 286 阅读 · 0 评论 -
数据结构与算法分析(四):递归
本系列为《Python数据结构与算法分析》第二版学习笔记,作者:布拉德利.米勒;戴维.拉努姆。文章目录一、递归三原则二、用递归计算一列数之和三、将整数转换为任意进制的字符串四、用递归画谢尔平斯基三角形递归是解决问题的一种方法,它将问题不断地分成更小的问题,直到子问题可以用普通的方法解决。通常情况下,递归会使用一个不停调用自己的函数。一、递归三原则(1)递归算法必须有基本情况;(2)递归算法必须改变其状态并向基本情况靠近;(3)递归算法必须递归的调用自己。基本情况是指使算法停止递归的条件,这通常原创 2021-08-05 20:03:00 · 924 阅读 · 0 评论 -
数据结构与算法分析(三):基本数据结构(3)--列表
文章目录1、列表2、链表3、无序列表4、链表分析1、列表列表是元素集合,其中每个元素都有一个相对于其他元素的位置,更具体的说,这种列表称为无序列表。无序列表支持的操作:List()创建一个空列表。它不需要参数,且会返回一个空列表add(item)假设元素item之前不在列表中,并向其中添加item。remove(item)假设元素item已经在列表中,并从其中移除item。search(item)在列表中搜索item,返回布尔值。isEmpty()检查列表是否为空,返回布尔值。appen原创 2021-07-31 11:52:38 · 181 阅读 · 0 评论 -
数据结构与算法分析(三):基本数据结构(2)
本系列为《Python数据结构与算法分析》第二版学习笔记,作者:布拉德利.米勒;戴维.拉努姆。文章目录1、队列2、双端队列3、用双端队列解决回文检测1、队列队列是有序集合,添加操作发生在“尾部”,移除操作发生在“头部”。新元素从尾部进入队列,然后一直向前移动到头部,成为下一个被移除的元素。这中排序原则被称作FIFO(first-in first-out),即先进先出,也称先到先得。用python实现队列类型:Queue()创建一个空队列。它不需要参数,且会返回一个空队列enqueue(item原创 2021-07-28 10:15:22 · 194 阅读 · 0 评论 -
数据结构与算法分析(三):基本数据结构(1)
线性数据结构:一旦某个元素被添加进来,它与前后元素的相对位置将保持不变。真正区分线性数据结构的是元素的添加方式和移除方式,尤其是添加操作和移除操作发生的位置。1、栈栈有时也被称作“下推栈”。它是有序集合,添加操作和移除操作总发生在同一端。这种排序被称作LIFO,即后进先出。用Python实现栈class Stack: # 创建一个空栈。它不需要参数,且会返回一个空栈 def __init__(self): self.items = [] #原创 2021-07-27 10:40:31 · 170 阅读 · 0 评论 -
数据结构与算法分析(二):算法分析
本系列为《Python数据结构与算法分析》第二版学习笔记,作者:布拉德利.米勒;戴维.拉努姆。算法分析关心的是基于所用的计算资源比较算法。我们说甲算法比乙算法好,依据是甲算法有更高的资源利用率或使用更少的资源。计算资源究竟指什么?一是考虑算法在解决问题时要占用的空间或内存,二是根据算法执行所需的时间进行分析和比较.一个算法的具体实例的执行时间不是一个有用指标,因为它依赖于特定的计算机、程序、时间、编译器和编程语言。如果要摆脱程序或计算机的影响来描述算法的效率,量化算法的操作或步骤很重要。1、大O记法原创 2021-07-17 13:49:54 · 271 阅读 · 1 评论 -
数据结构与算法分析(一):python数据类型
1、列表是零个或多个指向python数据对象的引用的有序集合,通过在方括号内以逗号分隔的一系列值来表达,列表是异构的,这意味着其指向的数据对象不需要都是同一个类,并且这一集合可以被赋值给一个变量。可用于任意Python序列的运算运算名运算符运算符索引【】取序列中的某个元素连接+将序列连接在一起重复*重复N次连接成员in询问序列中是否有某元素长度len询问序列的元素个数切片[:]取出序列的一部分python列表提供的方法原创 2021-07-13 10:05:24 · 144 阅读 · 0 评论