数据结构与算法
Aponson
这个作者很懒,什么都没留下…
展开
-
【数据结构与算法Python】树与树算法_二叉树_广度优先遍历(层次遍历)_深度优先遍历(先中后序)
006数据结构与算法Python树与树算法树的概念树的术语树的种类树的存储与表示常见的一些树的应用场景二叉树二叉树的基本概念二叉树的性质(特性)二叉树的节点表示以及树的创建二叉树的遍历深度优先遍历(先中后序遍历)广度优先遍历(层次遍历)树与树算法树的概念树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶原创 2020-07-22 12:26:29 · 470 阅读 · 0 评论 -
【数据结构与算法Python】排序与搜索_冒泡排序_选择排序_插入排序_快速排序_希尔排序_归并排序
005数据结构与算法Python排序与搜索排序算法的稳定性冒泡排序冒泡排序的分析代码实现时间复杂度选择排序选择排序分析代码实现时间复杂度插入排序代码实现时间复杂度快速排序(工作中常用)代码实现希尔排序希尔排序过程希尔排序的分析代码实现时间复杂度归并排序代码实现时间复杂度常见排序算法效率比较搜索二分法查找二分法查找实现(递归和非递归)必须是有序数组查找元素时间复杂度排序与搜索排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定顺序进行排列的一种算法。排序算法的稳定性稳定性:稳原创 2020-07-21 17:34:43 · 782 阅读 · 0 评论 -
【数据结构与算法Python】栈与队列_双端队列
004数据结构与算法Python栈栈结构实现栈的操作代码实现(列表实现)队列队列的实现操作双端队列操作实现(顺序表实现)栈栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, La原创 2020-07-19 21:16:14 · 172 阅读 · 0 评论 -
【数据结构与算法Python】链表_单链表_单向循环链表_双向链表
003数据结构与算法Python链表为什么需要链表链表的定义单向链表节点实现单链表的操作单链表的实现头部添加元素指定位置添加元素删除节点链表与顺序表的对比单向循环链表操作代码实现双向链表操作代码实现指定位置插入节点删除元素链表为什么需要链表顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活。链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。链表的定义链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是原创 2020-07-19 20:08:53 · 290 阅读 · 0 评论 -
【数据结构与算法Python】顺序表(线性表)
002数据结构与算法Python顺序表顺序表的基本形式顺序表的结构与实现顺序表的结构顺序表的两种基本实现方式元素存储区替换元素存储区扩充顺序表的操作增加元素删除元素Python中的顺序表list的基本实现技术顺序表将一组元素看成一个序列,用元素在序列里的位置和顺序,表示实际应用中的某种有意义的信息,或者表示数据之间的某种关系。这样的一组序列元素的组织形式,可以将其抽象为线性表。一个线性表是某类元素的一个集合,还记录着元素之间的一种顺序关系。线性表是最基本的数据结构之一,在实际程序中应用非常广泛,它还经原创 2020-07-18 19:37:22 · 496 阅读 · 0 评论 -
【数据结构与算法Python】概念
数据结构与算法Python0011.概念1.1 算法的提出算法的概念算法的五大特性1.2 算法效率衡量执行时间反应算法效率单靠时间值绝对可信吗?时间复杂度与“大O记法”如何理解“大O记法”最坏时间复杂度时间复杂度的几条基本计算规则1.3 常见时间复杂度常见时间复杂度之间的关系1.4 Python内置类型性能分析timeit模块list的操作测试pop操作测试list内置操作的时间复杂度dict内置操作的时间复杂度1.5 数据结构概念算法与数据结构的区别抽象数据类型(Abstract Data Type)1原创 2020-07-18 17:34:19 · 174 阅读 · 0 评论 -
【数据结构与算法】算法思维训练
数据结构与算法算法思维训练题判断一个数组中是否存在某个数求解最大公共子串解决代码问题的方法论。可以分为以下 4 个步骤:复杂度分析。估算问题中复杂度的上限和下限。定位问题。根据问题类型,确定采用何种算法思维。数据操作分析。根据增、删、查和数据顺序关系去选择合适的数据结构,利用空间换取时间。编码实现。算法思维训练题判断一个数组中是否存在某个数【题目】给定一个经过任意位数的旋转后的排序数组,判断某个数是否在里面。例如,对于一个给定数组 {4, 5, 6, 7, 0, 1, 2},它是将一个原创 2020-07-10 00:09:28 · 548 阅读 · 0 评论 -
【数据结构与算法】定位问题才能更好地解决问题:开发前的复杂度分析与技术选型
学习目录问题定位和技术选型例1:在一个包含 n 个元素的无序数组 a 中,输出其最大值 max_val通用解题的方法论问题定位和技术选型首先,我们要明确目标即用尽可能低的时间复杂度和空间复杂度,解决问题并写出代码;接着,我们要定位问题这个问题是什么类型(排序、查找、最优化)的问题;这个问题的复杂度下限是多少,即最低的时间复杂度可能是多少;采用哪些数据结构或算法思维,能把这个问题解决;例1:在一个包含 n 个元素的无序数组 a 中,输出其最大值 max_val1、考虑使用二分查找,二分查原创 2020-07-07 08:31:13 · 207 阅读 · 0 评论