
数据结构——Python实现
文章平均质量分 92
dta0502
个人博客:https://tding.top/
展开
-
Python 搜索、排序、复杂度分析
概述算法是计算机程序的一个基本的构建模块。评价算法质量的最基本的标准是正确性,另一个重要的标准是运行时间性能。当在一台真实、资源有限的计算机上运行一个算法的时候,经济性的考虑就有了用武之地,这样一个过程会消耗两种资源:处理时间和空间或内存。统计指令用于估算算法性能的另一种技术是统计对不同的问题规模所要执行的指令的数目。不管算法在什么平台上运行,这个统计数字对于算法所要执行的抽象的工作量给出了一个很...原创 2018-07-01 22:23:35 · 2492 阅读 · 0 评论 -
Python 队列
队列是线性的集合,对于队列来说,插入限制在一端(队尾),删除限制在另一端(队头)。队列支持先进先出(FIFO)的协议。我们在后面会提到一种特殊的队列——优先队列,在优先队列中,具有较高优先级的项会在那些具有较低优先级的项之前弹出,而具有相同优先级的项,则会按照先进先出(FIFO)的顺序弹出。队列的接口Python队列可以来模拟队列,使用列表的append方法来把项添加到队列的队尾,并且使用列表的p...原创 2018-06-28 15:42:29 · 25624 阅读 · 3 评论 -
Python 堆
堆是一类特殊的树,堆的通用特点就是父节点会大于或小于所有子节点(儿子不分左右)。一个最小堆(min-heap)就是其中的每一个节点都小于或等于其两个子节点的一个二叉树。一个最大堆(max-heap)将最大的节点放置到最靠近根节点的位置。注意:不能把这种类型的堆和计算机用于管理动态内存的堆搞混了。下面是区别:数据结构中:栈是一种具有后进先出的数据结构,堆是一种经过排序的树形数据结构,每个节点都有一个...原创 2018-06-28 10:15:50 · 5462 阅读 · 3 评论 -
Python 采用列表实现栈(Stack)
前言Python本身已有顺序表(List、Tupple)的实现,所以这里从栈开始。什么是栈想象一摞被堆起来的书,这就是栈。这堆书的特点是,最后被堆进去的书,永远在最上面。从这堆书里面取一本书出来,取哪本书最方便?肯定是最上面那本。栈这种数据结构的特点就是如此:后进先出(Last In First Out - LIFO),即最后被堆进去的数据,最先被拿出来。栈的Python实现栈可以用顺序表方式实现...转载 2018-06-23 13:56:05 · 5454 阅读 · 0 评论 -
Python 基于数组、链表实现的包接口
包接口包操作及其方法用户的包操作Bag类中的方法b = <class name>(<optional collection>)__init__(self,sourceCollection = None)b.isEmpty()isEmpty(self)len(b)__len__(self)str(b)__str__(self)item in b__contains__(sel...原创 2018-06-23 22:16:35 · 1255 阅读 · 0 评论 -
Python继承
继承当一个新类作为一个较为通用类的子类而生成的时候,新的类通过继承获得了已有类的所有特性和行为。前面在Python基于数组、链表实现的包接口这篇文章实现了一个基于数组的包接口,这里我们利用继承特性,使得ArraySortedBag类(有序的包类)成为ArrayBag类的一个子类。创建ArraySortedBag类的步骤(1)首先,删除掉不需要做修改的所有方法,它们都将会通过父类而自动包含,需要注意...原创 2018-06-24 10:47:08 · 520 阅读 · 0 评论 -
Python抽象类
抽象类抽象类描述了相关的一组类的通用的特征和行为。在客户的应用程序中,抽象类是不能正常实例化的,它的子类叫做具体类,这表明它们才是真正用来在客户应用程序中创建对象的类。设计一个AbstractBag类前面我们在Python 基于数组、链表实现的包接口中以不同方法实现了包接口。然后又在Python继承中实现了一个继承ArrayBag类的子类ArraySortedBag类。现在我们需要在ArrayBa...原创 2018-06-24 12:06:36 · 9600 阅读 · 0 评论 -
Python 采用数组、链表实现栈(Stack)
前面我们已经实现了Python 采用列表实现栈(Stack),那时我们将列表的末尾看作是栈的顶,列表方法append就是将元素压入栈中,而列表方法pop会删除并返回栈顶的元素,这种选择的主要缺点是,所有其它的列表操作也都可以操作这个栈,这包括了在任意位置插入、替换和删除元素。这些额外的操作违反了栈作为一种抽象数据类型的本意。栈接口栈接口中的方法栈方法作用s.isEmpty()如果是空返回True,...原创 2018-06-24 15:00:14 · 3116 阅读 · 1 评论 -
Python 二叉搜索树
树集合有三个重要的分类,树就属于其中的层级结构。大多数编程语言并没有将树作为一种标准类型包含其中,尽管如此,树还是得到了广泛的应用,它可以很自然的表示物体的集合,例如,一个文件的目录结构和一本书的目录。树的两个主要特征:(1)每个项都有多个子节点(2)除了叫做根的特殊的项,所有其他的项都只有一个父节点二叉树这里有两种极端情况:(1)分叉状,带有N个节点并且高度为N-1这样的树类似于链表列表中的一个...原创 2018-06-25 20:35:00 · 3296 阅读 · 0 评论 -
Python 列表
简要介绍列表是三种主要的线性集合中的一种(另两种是栈和队列)。列表所支持的操作,比栈和队列还要广泛,因此其应用也更广,并且也更难实现。尽管Python包含了一个内建的列表操作,但是还有几种可能的实现。为了让列表的大量操作更有意义,我们可以将其分为3类:基于索引的操作、基于内容的操作、基于位置的操作。注意:尽管列表中的项在逻辑上总是连续的,但是它们在物理内存中不一定是连续的。列表的数组实现了使用物理...原创 2018-06-26 22:28:55 · 354 阅读 · 1 评论 -
Python 集和字典
在一个有序的集合中,每一项的值和位置都很重要,并且每一项都是通过其位置来访问的。对于一个无序的集合来说,用户可以插入、访问或删除项,但是却不能访问第i个项、下一个项或前一个项。无序集合的一些示例是包、集和字典。集集(set)是没有特定顺序的项的一个集合,从用户的视角来看,集中的项是唯一的,也就是说,集中没有重复的项。Python的set类Python包含了一个set类,这个类的最常用的方法如下:S...原创 2018-06-29 10:20:08 · 763 阅读 · 0 评论