一起学数据结构与算法系列
文章平均质量分 84
陪伴大家一起学习数据结构与算法
!
摸鱼王胖嘟嘟
科班大三,记录学习用
展开
-
【算法】常见位运算总结
(n - 1):将最右侧的1,右边的区域(包括1)全部变成相反。-n:本质就是将最右侧的1,左边的区域全部变成相反。原创 2023-09-11 11:02:34 · 313 阅读 · 1 评论 -
【一起学数据结构与算法】还不会哈希表吗?一篇让你学会哈希表
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,原创 2022-11-03 20:00:12 · 343 阅读 · 24 评论 -
【一起学数据结构与算法】0基础学习集合Map和Set(包含面试题)
Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢二分查找,时间复杂度为O(logN),但搜索前必须要求序列是有序的根据姓名查询考试成绩通讯录,即根据姓名查询联系方式不重复集合,即需要先搜索关键字是否已经在集合中可能在查找时进行一些插入和删除的操作,即动态查找,那上述两种方式就不太适合了,本节介绍的Map和Set是一种适合动态查找的集合容器。原创 2022-10-31 10:56:25 · 579 阅读 · 36 评论 -
【一起学数据结构与算法】计数排序、基数排序、桶排序(含菜鸟教程代码)
之前我们学过了几种常见的排序,都是基于比较的排序,我们也知道其中平均时间复杂度都是O(n * logn),要达到线性的时间复杂度,我们就需要新的排序方法!接下来为大家介绍的三种排序方法都是不基于比较的排序!原创 2022-10-29 17:34:32 · 1314 阅读 · 24 评论 -
【一起学数据结构与算法】二叉搜索树的模拟实现
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作。原创 2022-10-29 15:53:46 · 138 阅读 · 4 评论 -
【一起学数据结构与算法】几种常见的排序(插入排序、选择排序、交换排序、归并排序)
排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。–(来源百度)将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。原创 2022-10-25 22:54:19 · 2140 阅读 · 67 评论 -
【一起学习数据结构与算法】优先级队列(堆)
如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了。这样,我们就引入了优先级队列这种数据结构。优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一个新元素 (3)删除 一般情况下,查找操作用来搜索优先权最大的元素,删除操作用来删除该元素。对于优先权相同的元素,可按先进先出次序处理或按任意优先权进行。–(来源百度)原创 2022-10-22 09:17:40 · 2121 阅读 · 155 评论 -
【一起学数据结构与算法】全方面学习二叉树(下)
此篇是对上篇二叉树的补充!原创 2022-10-14 10:54:28 · 573 阅读 · 16 评论 -
【一起学数据结构与算法】全方面学习二叉树(上)
这篇开始会带领大家学习二叉树,会比较深入的去探讨,希望能够给大家有很多的启发!原创 2022-10-10 15:17:36 · 462 阅读 · 95 评论 -
【小嘟陪你刷题09】设计链表、二维网格迁移
清新两道题!原创 2022-10-08 10:47:36 · 130 阅读 · 29 评论 -
【一起学数据结构与算法】深度学习队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。– 来源百度队头(front):允许删除的一端,称为队首队尾(rear):允许插入的一端空队列:不包含任何元素的空表。原创 2022-10-07 16:14:33 · 717 阅读 · 24 评论 -
【一起学数据结构与算法】深度学习栈
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。原创 2022-10-05 19:46:01 · 910 阅读 · 43 评论 -
【一起学数据结构与算法】(项目实现)使用ArrayList实现扑克牌
学习了关于集合类的知识,我们可以做一个小项目来加深对集合类知识的学习!原创 2022-10-03 14:53:10 · 433 阅读 · 32 评论 -
【一起学数据结构与算法】Java实现双链表
双链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。原创 2022-10-01 19:14:38 · 1364 阅读 · 66 评论 -
【一起学数据结构与算法】快速教你了解并实现单链表
此篇是对单链表知识的学习和实现,基本上大体的方法实现和思路都已经表达,如果有不对的地方,还请各位大佬多多指教!原创 2022-09-26 22:36:01 · 1563 阅读 · 110 评论 -
【一起学数据结构与算法】一招教你学会BF算法和KMP算法
这篇文章是小编对BF算法和KMP算法学习的整理,可能不太严谨,希望大佬勿喷,若有不足,多多指教!评论区见!原创 2022-09-21 22:03:22 · 683 阅读 · 46 评论 -
【一起学数据结构与算法】顺序表的实现
线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见 的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储 时,通常以数组和链式结构的形式存储。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。其实就是一个数组。那为什么还要写一个顺序表,直接用数组不就好了?原创 2022-08-23 10:35:25 · 1203 阅读 · 86 评论 -
【一起学数据结构与算法】时间复杂度_空间复杂度
所谓的复杂度就是衡量算法的效率,衡量算发效率又分为两种,一种叫做时间复杂度,一种叫做空间复杂度。原创 2022-08-23 09:35:53 · 561 阅读 · 56 评论