
数据结构与算法(Python)
靠谱的大钊
没啥写, 就这样
展开
-
数据结构与算法(Python)[超详细版本] 02-2 栈-栈的操作(或实现)
##栈结构实现栈可以用顺序表实现,也可以用链表实现。栈的操作List itemStack() 创建一个新的空栈push(item) 添加一个新的元素item到栈顶pop() 弹出栈顶元素peek() 返回栈顶元素is_empty() 判断栈是否为空size() 返回栈的元素个数class Stack(object): """栈""" def __init__(self): self.items = [] def is_empty(self)原创 2020-05-19 00:21:19 · 227 阅读 · 0 评论 -
数据结构与算法(Python)[超详细版本] 02-1 栈-定义及特性
栈1.定义及特性栈(Stack)是限制在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶(Top),另一端为栈底(Bottom)。当表中没有元素时称为空栈。假设栈S=(a1,a2,a3,…an),则a1称为栈底元素,an为栈顶元素。栈中元素按a1,a2,a3,…an的次序进栈,退栈的第一个元素应为栈顶元素。换句话说,栈的修改是按后进先出的原则进行的。因此,栈称为后进先出表(LIFO)(LIFO, Last In First Out)1. 定义限定只能在表的一端进行插入和删除运算原创 2020-05-19 00:09:28 · 384 阅读 · 0 评论 -
数据结构与算法(Python)[超详细版本] 01-5 线性表-双向链表的操作(或实现)
双向链表目录双向链表操作基础实现指定位置插入节点删除元素完整代码:链表中就有两条方向不同的链,我们可称之为双向链表(Double Linked List)。顾名思义,在双向链的结点表中有两个指针域,其中一个指向直接后继,另一个指向直接前驱,描述如下:class Node(object): """双向链表节点""" def __init__(self, item): ...原创 2020-04-30 10:24:35 · 249 阅读 · 1 评论 -
数据结构与算法(Python)[超详细版本] 01-4 线性表-循环链表的操作(或实现)
循环链表循环链表(Circular Linker List)是单链表的另一种形式,它是一个首尾相接的链表。它的特点是表中最后一个结点的指针域由NULL改为指向头结点或线性表中的第一个结点,整个链表形成一个环,就得到了单链形式的循环链表。在循环单链表中,从表中任意结点出发均可找到表中其它结点,如图所示。为了使某些操作实现起来方便,在循环单链表中也可设置一个头结点。那么空循环链表仅由一个自成循环的...原创 2020-04-30 08:49:58 · 271 阅读 · 1 评论 -
数据结构与算法(Python)[超详细版本] 01-3 线性表-单链表的操作(或实现)
链表目录链表为什么需要链表链表的定义(1) 链式存储结构特点:节点实现(2) 与链式存储有关的术语(3) 单链表的操作单链表的实现链表与顺序表的对比完整代码线性表顺序存储结构特点:逻辑关系上相邻的两个元素在物理存储位置上也相邻优点:可以随机存取表中任一元素,方便快捷;缺点:在插入或删除某一元素时,需要移动大量元素。解决问题的思路:改用另一种线性存储方式——链式存储结构为什么需要链表...原创 2020-04-28 23:42:41 · 701 阅读 · 1 评论 -
数据结构与算法(Python)[超详细版本] 01-2 线性表-顺序表的操作(或实现)
数据结构的基本运算:修改、插入、删除、查找、排序1) 修改通过数组的下标便可访问某个特定元素并修改之。核心语句: V[i]=x;显然,顺序表修改操作的时间效率是 O(1)2)插入在线性表的第i个位置前插入一个元素的示意图如下实现步骤:将第n至第i 位的元素向后移动一个位置;将要插入的元素写到第i个位置;表长加1。注意:事先应判断: 插入位置i 是否合法?表是否...原创 2020-04-26 16:37:27 · 868 阅读 · 1 评论 -
算法:元素存储区扩充
元素存储区扩充采用分离式结构的顺序表,若将数据区更换为存储空间更大的区域,则可以在不改变表对象的前提下对其数据存储区进行了扩充,所有使用这个表的地方都不必修改。只要程序的运行环境(计算机系统)还有空闲存储,这种表结构就不会因为满了而导致操作无法进行。人们把采用这种技术实现的顺序表称为动态顺序表,因为其容量可以在使用中动态变化。扩充的两种策略每次扩充增加固定数目的存储位置,如每次扩充增加10...原创 2020-04-26 16:12:41 · 300 阅读 · 1 评论 -
数据结构与算法(Python)[一看就会] 01-2 线性表-顺序表的结构与实现
顺序表的结构一个顺序表的完整信息包括两部分,一部分是表中的元素集合,另一部分是为实现正确操作而需记录的信息,即有关表的整体情况的信息,这部分信息主要包括元素存储区的容量和当前表中已有的元素个数两项。顺序表的两种基本实现方式图a为一体式结构,存储表信息的单元与元素存储区以连续的方式安排在一块存储区里,两部分数据的整体形成一个完整的顺序表对象。一体式结构整体性强,易于管理。但是由于数据元素...原创 2020-04-26 16:11:47 · 250 阅读 · 1 评论 -
数据结构与算法(Python)[一看就会] 01-1 线性表-顺序表定义
线性表的顺序表示线性表的顺序表示又称为顺序存储结构或顺序映像。顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。特点:逻辑上相邻的元素,物理上也相邻。顺序存储方法:用一组地址连续的存储单元依次存储线性表的元素。利用数组V[n]来实现注意:在语言中数组的下标是从0开始,即:V[n]的有效范围是从 V[0]~V[n-1]线性表顺序存储特点:逻辑上相邻的数...原创 2020-04-26 16:02:56 · 318 阅读 · 1 评论 -
数据结构与算法(Python)01-0 线性表(一看就会的线性表)
线性表定义 若结构是非空有限集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。 可表示为:(a1 , a2 , ……, an) 线性结构的基本特征: 1.集合中必存在唯一的一个“第一元素”; 2.集合中必存在唯一的一个 “最后元素” 3.除最后元素在外,均有 唯一的后继; 4.除第一元素之外,均有 唯一...原创 2020-04-26 15:38:07 · 435 阅读 · 1 评论 -
数据结构与算法(Python)00 数据结构(算法与数据结构的区别)
数据结构我们如何用Python中的类型来保存一个班的学生信息? 如果想要快速的通过学生姓名获取其信息呢?实际上当我们在思考这个问题的时候,我们已经用到了数据结构。列表和字典都可以存储一个班的学生信息,但是想要在列表中获取一名同学的信息时,就要遍历这个列表,其时间复杂度为O(n),而使用字典存储时,可将学生姓名作为字典的键,学生信息作为值,进而查询时不需要遍历便可快速获取到学生信息,其时间复杂度...原创 2020-04-26 15:12:53 · 236 阅读 · 0 评论 -
数据结构与算法(Python)00-4Python内置类型性能分析
timeit模块timeit模块可以用来测试一小段Python代码的执行速度。class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)timeit模块可以用来测试一小段Python代码的执行速度。class timeit.Timer(stmt=‘pass’, setup=‘pass’, time...原创 2020-04-25 10:30:02 · 206 阅读 · 0 评论 -
数据结构与算法(Python)00-3简易算法分析--常见时间复杂度
数据结构与算法(Python)00-3简易算法分析第一次尝试的算法核心部分for a in range(0, 1001): for b in range(0, 1001): for c in range(0, 1001): if a**2 + b**2 == c**2 and a+b+c == 1000: prin...原创 2020-04-24 14:44:43 · 308 阅读 · 0 评论 -
数据结构与算法(Python)00-2算法效率衡量
数据结构与算法(Python)00-2算法效率衡量第一次尝试import timestart_time = time.time() 注意是三重循环for a in range(0, 1001): for b in range(0, 1001): for c in range(0, 1001): if a**2 + b**2 == c**...原创 2020-04-24 12:03:09 · 319 阅读 · 0 评论 -
数据结构与算法(Python)00-1引入概念
数据结构与算法(Python)00-1引入概念算法的概念算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务。一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。算法是独立存在的一种解决问题的方法和思想。对于算法而言,实现的语言并不重要,重要的是思想。算法可以有不同的语言描述实现版...原创 2020-04-24 11:52:45 · 170 阅读 · 0 评论