数据结构与算法
文章平均质量分 74
分享数据结构与算法相关的笔记、代码或者小项目❤
Skylar Lin
“不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之。”
展开
-
八大排序算法【上】
它的工作原理是每次检查相邻两个元素,如果前面的元素与后面的元素满足给定的排序条件,就将相邻两个元素交换。当序列完全有序时,冒泡排序只需遍历一遍数组,不用执行任何交换操作,时间复杂度为 $ O(N)$;插入排序的思想:将当前元素与已经排好序的子数组中的元素逐个比较,找到合适的位置插入当前元素。当增量减小至 1 时,相当于进行一次普通的插入排序,此时数组已经被排好序了。最优时间复杂度为 $ O(N)$,最坏时间复杂度和平均时间复杂度都为。每次选择一个最大/最小的数,与当前位置的数进行交换。原创 2023-12-11 20:42:30 · 1275 阅读 · 0 评论 -
【后端开发】手写一个简单的线程池
实际上是一个“同步队列”,允许多线程添加/取出任务,并保证线程安全。处理来自上层的任务请求,将它们加入到排队层中等待处理。从排队层中取出任务,多线程并发处理排队层中的任务。不想码字,想看的凑活着看吧!首先,我们来实现一个。原创 2023-11-03 20:44:01 · 383 阅读 · 0 评论 -
【数据结构】动手实现一个简单的跳表!
/ 最大层数// 跳表节点int key;int value;// 用数组存放指针,表示最多可以有 MAX_LEVEL 层我们定义的是一个具有 key 和 value 的节点,相比单一的 value,更为贴切 K-V 存储系统。public:private:// 随机决定新节点的层数Node* head;int level;在上面的定义中,我们看到了 randomLevel的声明,现在试着来实现它。我们已经知道跳表是一种随机数据结构。原创 2023-10-14 20:28:55 · 68 阅读 · 1 评论 -
【数据结构】红黑树插入自平衡实现
新学期学业繁忙,以至于没什么时间没更新博客;今天整理了红黑树的相关知识,代码都是手写简化版,如果哪里有问题希望批评指正💗红黑树(Red Black Tree)是一种自平衡的二叉搜索树,它满足以下性质:红黑树的节点为红色或黑色;根节点和叶子节点都为黑色,且叶子节点为 NIL;如果一个节点为红色,则它的子节点都为黑色;从根节点到 NIL 节点的每条路径上的黑色节点数量相同。R-B 树不是绝对的平衡,而是*“相对的平衡”*,即:每条路径上的黑色节点数量相同。原创 2023-10-10 13:32:03 · 54 阅读 · 0 评论 -
【图的存储方式】邻接表、邻接矩阵、链式向前星
可以想到的一点是,每个端点的编号是默认从 0 开始的连续整数;如果我们想要让每个端点拥有它自己的专属且独特的编号,可以用哈希表来实现;同理,如果想要让每个端点拥有它自己的专属且独特的编号,可以用哈希表来实现,这里略过,参考邻接表的实现。链式向前星的思想是:使用链表来存储每个顶点的邻接边,以便有效地表示稀疏图。对于无向图来说,我们只需要同时存两条有向边,即令。的空间复杂度,如果是点与点之间的连边数远小于。对于邻接表的存储方法来说,有无重边是不影响的!只需要记录点 u 的所有出边上的终点即可;原创 2023-09-15 21:57:32 · 146 阅读 · 0 评论