首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
卧学算法
Silently9527
创建于2021-05-19
订阅专栏
躺着也可以学习常见的经典算法
等 5 人订阅
共16篇文章
创建于2021-05-19
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Silently9527
2年前
Java
后端
图算法系列之计算图中最短路径
前言 在前面两篇中我们通过深度优先搜索可以从图中找出一条通过顶点v到顶点w的路径,但是深度优先搜索与顶点的输入有很大的关系,找出来的路径也不一定是最短的,通常情况下我们很多时候需要找出图中的最短路径,
964
2
评论
Silently9527
2年前
Java
后端
图算法系列之深度优先搜索(二)
在上篇中我们学习了深度优先搜索,知道了如何通过深度优先搜索在图中寻找路径;本篇我们继续一起来学习深度优先搜索算法的其他应用场景 连通分量 从一幅图中找出所有的连通分量,这是也是深度优先搜索的一个应用场
708
5
评论
Silently9527
2年前
Java
后端
图算法系列之深度优先搜索(一)
前言 在上一篇中我们把图通过邻接表数组表示出来了,这个数据结构将会做我们实现图算法的基础,本篇我们将一起开始学习图算法的第一个搜索算法 - 深度优先搜索 搜索API的定义 在开始实现算法之前,我们依然
690
8
评论
Silently9527
2年前
Java
后端
图算法系列之无向图的数据结构
前言从本篇开始我们将会一起来学习图相关的算法,图算有很多相当实用算法,比如:垃圾回收器的标记清除算法、地图上求路径的最短距离、拓扑排序等。在开始学习这些算法之前我们需要先来了解下图的基本定义,以及使用
1134
6
评论
Silently9527
2年前
Java
后端
数据库
基于拉链式和线性探测式散列表实现Map
散列表实现Map主要分为了两个步骤: 1. 基于散列函数将被查找键转换为数组的下标 2. 处理散列值冲突的情况,有两种方式来处理冲突:拉链式和线性探测
1168
10
评论
Silently9527
2年前
Java
后端
硬核图解红黑树并手写实现
红黑树算是数据结构中比较有难度的知识点,虽然在实际的业务开发工作中使用的不多,但是这是面试官最喜欢问的知识点。 我在之前也看过很多关于红黑树的文章,但是很多都是从红黑树的性质来讲红黑树,根本未从红黑树的理论模型出发讲红黑树,所以造成红黑树比较难理解。 在学习红黑树之前,我们先来…
2527
59
20
Silently9527
2年前
Java
算法
基于二叉树实现Map
二叉树中每个节点都包含了两个指针指向自己的左子树和右子树。 二叉树的每个节点都包含了一个Key, 并且每个节点的Key都大于其左子树中的任意节点,小于右子树中的任意节点。 插入操作的实现思路: 与查询操作类似,依然是递归,如果put的key值比当前节点大就需要去右子树递归,如果…
1214
10
评论
Silently9527
2年前
Java
后端
基于数组或链表实现Map
JAVA中的Map主要就是将一个键和一个值联系起来。虽然JAVA中已经提供了很多Map的实现,为了学习并掌握常用的数据结构,从本篇开始我将自己实现Map的功能,本篇主要是通过数组和链表两种方式实现,之后提供二叉树,红黑树,散列表的版本实现。通过自己手写各个版本的Map实现,掌握…
842
8
1
Silently9527
2年前
Java
算法
图解堆排序
在上一篇中我们一起使用二叉堆实现了优先级队列,假如我们从构建好的优先级队列中持续调用删除最小(或者最大),把结果输出到另一个数组中,那么就可以把数组的所有元素进行排序,这就是本篇我们需要学习的堆排序。在看本篇之前需要先看下前一篇《原来实现优先级队列如此简单》 由于数组中的每个位…
749
6
1
Silently9527
2年前
Java
后端
原来实现优先级队列如此简单
在二叉堆中,每个节点都将大于等于它的子节点,也成为堆有序;其中根节点是最大的节点。 文中或许会存在或多或少的不足、错误之处,有建议或者意见也非常欢迎大家在评论交流。
1076
9
评论
Silently9527
2年前
Java
后端
快速排序算法实现及优化
快速排序可以说是使用最广的排序算法了,主要的特点是基于原地排序(不需要使用辅助数组,节省空间);其实对于长度为N的数组使用快速排序时间复杂度为 NlogN;在前几篇也一起讨论了其他的排序算法,都没能够把这两个特点结合起来。 快速排序也是一种分治的排序算法,把数组划分为两个子数组…
1123
7
2
Silently9527
2年前
Java
后端
死磕归并排序算法
在上一篇《常见的初级排序算法,这次全搞懂》,主要谈了常用的初级算法,这些算法的时间复杂度都是O(n²),这些算法无法处理大量数据;本篇我们谈一种基于归并操作完成排序的算法。 要将一个数组排序,可以先将数组分为两个数组分别排序,然后再将结果归并在一起,重复递归这个过程,直到数组整…
888
4
评论
Silently9527
2年前
Java
后端
常见的初级排序算法,这次全搞懂
相信所有的程序员刚开始接触到的算法都会是排序算法,因为排序在对数据处理和计算有这重要的地位,排序算法往往是其他算法的基础;本文我们就先从初级排序算法开始学习算法。 想象我们在玩扑克牌时,整理扑克牌都是把每一张插入到左边已经排好序的牌中适当的位置。插入排序的思路类似 从代码的实现…
1585
17
3
Silently9527
2年前
Java
后端
如何检测社交网络中两个人是否是朋友关系(union-find算法)
好了,言归正传。 有时候我们可以需要判断在大型网络中两台计算机是否相连,是否需要建立一条新的连接才能通信;或者是在社交网络中判断两个人是否是朋友关系(相连表示是朋友关系)。在这种应用中,通常我们可能需要处理数百万的对象和数亿的连接,如何能够快速的判断出是否相连呢?这就需要使用到…
3888
37
9
Silently9527
2年前
Java
后端
老哥是时候来复习下数据结构与算法了
到公司后,我依然被带到了那个小黑屋,等待着面试官的到来。没想等来的是一位美女小姐姐。 我:二分查找法是在一个有序的数组中查到一个值,如果存在就返回在数组中的索引,否则就返回-1;算法维护了两个变量lo(最小)和hi(最大),每次查找都与中间值(mid)进行比较,如果等于就返回m…
1808
13
7
Silently9527
2年前
Java
后端
一致性Hash算法Java版实现
在之前写了两篇关于缓存的文章《万字长文聊缓存(上)- http缓存》《万字长文聊缓存(下)- 应用级缓存》,谈到缓存不说一下一致性Hash算法那就是在耍流氓。 同理,当我们需要扩展一组新的redis机器,计算的公式index=hash(key) % 4,大量的key会被重新定位…
1715
28
11
温馨提示
当前操作失败,如有疑问,可点击申诉