![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 66
莱维贝贝、
这个作者很懒,什么都没留下…
展开
-
数据结构与算法总结(python)
记录数据结构与算法的知识点以及常见题目,为以后复习做准备;1. 数据结构类型1.1 数组1.2 链表1.3 堆栈1.4 队列1.6 哈希表1.5 树1.6 图2. 基础算法2.1 排序2.2 查找2.3 搜索2.4 动态规划背包问题最长公共子序列最长回文子串爬楼梯编辑距离参考https://blog.csdn.net/wbzhang233/article/details/108890956https://algo.itcharge.cn/00.Introdu.原创 2022-05-24 16:58:09 · 1217 阅读 · 0 评论 -
快速排序(python)
1.什么叫快速排序?快速排序是对冒泡排序的改进,其实质是给基准数据找其正确索引位置的过程。2.快速排序的实现步骤?快排的主要思想是分治思想,将大问题分成小问题解决,主要有三步:在数列中,选择一个元素作为基准(pivot),或者叫比较值:将数列中所有元素与基准进行比较,比基准小的放基准的左边,比基准大的放基准的右边。以基准值左右两边的子列作为新数列,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。如下图所示:3.快速排序是所有排序里面性能最好的吗?答:在数据规模越大快速排序的性能原创 2022-03-09 22:40:56 · 4257 阅读 · 0 评论 -
归并排序(Python代码)
1.归排序归并排序用的是分治法,把一个大问题化解为k个中问题,每个中问题再化解为k个小问题,直至问题化为最小可解的问题。对这些问题求解,再不断地合并结果,直至合并完毕。如下图:注意:合并方法,一个一个对比两个中的数,谁小(或者大)就先将放进列表中;合并必有一个列表没处理完:因为当 i == len ( L ) 或者 j == len ( R) 时,跳出while循环,且每次循环只处理一个列表里的内容,所以其中有一个列表内容会先全部加入res中,另一个列表还剩内容未加进res中。 # 1.将原创 2022-03-01 19:55:23 · 5669 阅读 · 1 评论 -
递归、回溯、深度优先搜索(DFS)
1. 递归、回溯、深度优先搜索(DFS)之间的关系深度优先搜索是递归实现的,是要搜索整个二叉树的,在这个搜索的基础上,而回溯算法建立在 DFS 基础之上的,但不同的是在搜索过程中,达到结束条件后,恢复状态,回溯上一层,再次搜索。2.什么是递归递归定义:在数学与计算机科学中,递归(Recursion)是指在函数的定义中使用函数自身的方法。例如: 你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开它。若干次之后,你打开面前的门后,发现只原创 2022-02-25 21:35:02 · 1583 阅读 · 0 评论 -
哈希表知识与相关题目(Python)
1. 哈希表知识1.1 哈希表简介哈希表(Hash Table):也叫做散列表。是根据键(key)、值(value)直接进行访问的数据结构。也就是说,它通过键key和一个映射函数Hash(key)计算出对应的值value,把key和value映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。哈希表的关键思想是使用哈希函数,将键 key 映射到对应表的某个区块中。哈希表的原理实例如下图所示:上图例子的解释:value = Hash(key) = k原创 2022-01-24 21:47:34 · 1488 阅读 · 0 评论 -
优先队列与相关题目(Python、二叉堆)
1. 优先队列知识1.1 优先队列简介优先队列:一种特殊的队列。在优先队列中,元素被赋予优先级,当访问队列元素时,具有最高优先级的元素最先删除。优先队列与普通队列最大的不同点在于出队顺序普通队列:先进先出优先队列:最高级先出,优先队列是按照元素的优先级来决定出队顺序的,优先级高的优先出队,优先级低的元素后出队。示意图如:1.2 优先队列的应用场景应用场景很多,比如:数据压缩:赫夫曼编码算法;最短路径算法:Dijkstra 算法;最小生成树算法:Prim 算法;任务调度器:根据优先原创 2022-01-23 23:12:35 · 233 阅读 · 0 评论 -
单调栈与相关题目(Python)
1. 单调栈简介单调栈(Monotone Stack):一种特殊的栈。在栈的【先进后出】规则基础上,要求【从栈顶到栈底的元素是单调递增】。其中满足从栈顶到栈底的元素是单调递增的栈,叫做【单调递增栈】。满足从栈顶到栈底的元素是单调递减的栈,叫做【单调递减栈】。PS: 理论看着有条理,但是有可能会觉得单调栈无用,1.1 单调递增栈单调递增栈:只有比栈顶元素小的元素才能直接进栈,否则需要先将栈中比当前元素小的元素出栈,再将当前元素入栈。这样就保证了:栈中保留的都是比当前入栈元素大的值,并且从栈顶到栈底的元原创 2022-01-19 22:41:51 · 834 阅读 · 0 评论 -
堆栈的基础知识与相关题目(Python)
1.堆栈简介堆栈:简称为栈。一种线性表数据结构,是一种只允许在表的一端进行插入和删除操作的线性表。把栈中允许插入和删除的一端称为 「栈顶(top)」;另一端则称为 「栈底(bottom)」。当表中没有任何数据元素时,称之为 「空栈」。两种基本操作:「插入操作」 和 「删除操作」。栈的插入操作又称为「入栈」或者「进栈」。栈的删除操作又称为「出栈」或者「退栈」。简单来说,栈是一种 「后进先出(Last In First Out)」 的线性表,简称为 「LIFO 结构」。线性表:栈首先是一个线原创 2022-01-18 19:59:53 · 1858 阅读 · 0 评论 -
链表基础知识与题目整理(Python)
1.链表简介1.1 链表定义链表(Linked List): 一种线性表数据结构。它使用一组任意的存储单元(可以是连续的,也可以是不连续的),来存储一组具有相同类型的数据。比如单链表:如上图所示,链表通过将一组任意的存储单元串联在一起。链表节点: 每个数据元素占用若干存储单元的组合称为一个链接点。链表节点的存储内容: 数据元素的值+后继指针(后继指针是指出这个数据元素在逻辑关系上的直接后继元素所在链节点的地址)。数据之间的逻辑关系:逻辑关系是通过后继指针来简介反映的。逻辑上相邻的数据数素在物原创 2022-01-12 21:44:04 · 1268 阅读 · 0 评论 -
Python中队列的常用操作
from collections import dequeclass Test: def test(self): # Create a quede 创建一个队列,在python中队列是双端队列,两端都可以进行操作 queue = deque() # Add element 添加元素 # Time Complexity: O(1) queue.append(1) queue.append(2) .原创 2021-04-08 15:16:30 · 750 阅读 · 0 评论 -
python链表常用操作
创建链表from collections import deque#Create a Linkedlistlinkedlist = deque()添加元素from collections import dequelinkedlist = deque()#Add element#Time Complexity: 0(1)linkedlist.append(1)linkedlist.append(2)linkedlist.append(3)print(linkedlist)#原创 2021-04-07 10:14:13 · 391 阅读 · 0 评论 -
python中数组常见的操作(删除元素、插入元素、排列元素等等)
创建数组#Create an arraya = []添加元素#Create an arraya = []#Add element#Time Complexity:O(1)a.append(1)a.append(2)a.append(3)print(a)# [1,2,3]# append在结尾添加元素# Insert在数据中间添加元素#Insert element#Time Complexity:O(N)a.insert(2,99);print...原创 2021-04-06 14:25:58 · 2216 阅读 · 0 评论 -
基于python的数据结构与算法(持续跟新中)
递归实例:汉诺塔问题def hanoi(n, a, b, c): #n个盘子经过b移到c if n>0: hanoi(n-1, a, c, b) #n-1个盘子经过c移动到b print("moving from %s to %s" % (a, c)) hanoi(n-1, b, a, c) hanoi(3, 'A', 'B', 'C')列表查找 O(n)"""笔记:1.enumerate(sequence, [sta原创 2021-03-23 10:11:30 · 140 阅读 · 0 评论