算法
文章平均质量分 81
Leonarde_WP
这个作者很懒,什么都没留下…
展开
-
朴素贝叶斯分类算法
带你理解朴素贝叶斯分类算法和,确定映射规则y = f(),使得任意有且仅有一个,使得成立。其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合(特征集合),其中每一个元素是一个待分类项,f叫做分类器。分类算法的任务就是构造分类器f。分类算法的内容是要求给定特征,让我们得出类别,这也是所有分类问题的关键。那么如何由指定特征,得到我们最终的类别,也是我们下面要讲的,每一个不同的分类算法,对应着不同的核心思想。本篇文章,我会用一个具体实例,对朴素贝叶斯算法几乎所有的重...转载 2021-06-08 14:52:35 · 1186 阅读 · 0 评论 -
最近最少使用策略LRU原理
原理:双向链表实现1、当一个位置被命中之后,将该位置调整到链表头2、新加入的节点直接加到链表头当需要删除内容时候,链表的最后位置就是最少被命中的位置,我们只需要淘汰链表最后的部分即可。今天和简单聊一下大厂面试经常被问到的一个知识点,LRU 的原理。三种最常见的链表结构循环链表的概念如上图所示:单链表的尾结点指针指向空地址,表示这就是最后的结点了。而循环链表的尾结点指针是指向链表的头结点。因此循环链表是一种特殊的单链表。*它跟单链表唯一的区别就在于尾结点。它像一个环一.转载 2021-05-24 15:31:50 · 749 阅读 · 0 评论 -
加密
大多数加密都分为:对称加密、非对称加密、单向加密在如今复杂的网络环境中单凭通过一个加密方式来确保数据安全是不科学的,一般都是混合加密。在算力逐渐增强的情况下,没有什么加密算法是不能暴力破解的,只是时间问题,所以以后的加密算法会越来越复杂,密文会越来越长对称加密:加密和解密采用同一密钥(大部分时候用同一个。也可以是两个,但可以互相推导出,没啥意义)。它要求发送方与接收方在安全通信前,商定一个密钥。对称算法的安全性依赖于密钥,泄露密钥就意味着任何人都可以对他们发送或接收的消息解密。优点..原创 2021-02-23 20:41:43 · 364 阅读 · 0 评论 -
实用算法 - 总纲
1、K最近邻算法 - 一种分类算法思路:在特征空间中,如果一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别。即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。2、广度优先搜索算法 - 一种盲目搜寻法,思路:求两点最短路径的算法(路径上权重一样),很实用的图算法(地图导航、下棋);可解决两类问题:1、节点A有路径到节点B吗 2、原创 2021-05-10 16:26:41 · 196 阅读 · 0 评论 -
查找算法 - 总纲
查找算法:按照性能来看,散列hash最好(也是一种索引查找),索引查找,磁盘交互用B+树 / 内存增删查用红黑树,有序序列的查找用二分/插值/斐波那契,实在不行直接顺序查找;一般都是组合使用1.0、二分查找算法:前提:是“有序”的“知道界限”的元素列表原理:每次都与“中间的数”比较看是大了还是小了,下一次的猜测直接排除一半的可能,从另外一半继续查找,重复这个过程,直到查找成功或者查找集为空适用场景:本身就是有序的存储,或者维持有序的代价不高,就可以用这个,很快(太简单的直接顺序查找即可)时间复原创 2021-05-06 11:00:34 · 109 阅读 · 0 评论 -
分布式ID生成方式
先说结论:一般推荐号段模式,雪花算法非常容易掉坑。。。。比如前端数字类型最多53位,你一个json以long的形式传到前端基本上就掉坑了一、为什么要用分布式ID?在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征?1、什么是分布式ID?拿MySQL数据库举个栗子:在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分.转载 2021-04-13 11:12:01 · 94 阅读 · 0 评论 -
B+树
B+ 树B+树是对 B 树的进一步优化。让我们先来看下 B+ 树的结构图:根据上图我们来看下 B+树和 B 树有什么不同:①B+树非叶子节点上是不存储数据的,仅存储键值,而 B 树节点中不仅存储键值,也会存储数据。之所以这么做是因为在数据库中页的大小是固定的,InnoDB 中页的默认大小是 16KB。如果不存储数据,那么就会存储更多的键值,相应的树的阶数(节点的子节点树)就会更大,树就会更矮更胖,如此一来我们查找数据进行磁盘的 IO 次数又会再次减少,数据查询的效率也会更...转载 2021-04-09 11:51:10 · 605 阅读 · 0 评论 -
B树
B树(B-tree)注意:之前有看到有很多文章把B树和B-tree理解成了两种不同类别的树,其实这两个是同一种树;概念:B树和平衡二叉树稍有不同的是B树属于多叉树又名平衡多路查找树(查找路径不只两个),数据库索引技术里大量使用者B树和B+树的数据结构,让我们来看看他有什么特点;规则:(1)排序方式:所有节点关键字是按递增次序排列,并遵循左小右大原则;(2)子节点数:非叶节点的子节点数>1,且<=M ,且M>=2,空树除外(注:M阶代表一个树...转载 2021-04-08 22:19:57 · 131 阅读 · 0 评论 -
simhash算法 - 检查两者相似度
一般的hash算法是出现哪怕轻微的变化,hash结果也会发生很大的变化simhash算法:出现轻微的变化,hash值发生较小的变化;思想:simhash是将一个文档,最后转换成一个64位的字节,暂且称之为特征字,然后判断相似只需要判断他们的特征字的距离是不是<n(根据经验这个n一般取值为3),就可以判断两个文档是否相似。步骤:内容分词 -》 每个词通过MD5算法提取摘要变换为数值 -> 根据分词后对应词出现的数量加权 -> 分词的加权结果累加 -> 累加结果降维为1/0,原创 2021-03-18 21:57:32 · 349 阅读 · 0 评论 -
初识算法(时间复杂度)
一、什么是算法?算法不是特指高大上的数学公式,指的是解决问题的思路方法。生活中处处是算法。为什么很多算法都会用到数学公式呢?因为这些公式可以减少计算机的运算步骤,锦上添花。二、有时候一个问题有多种解决思路(多种算法),如何选择出最好的那个呢?好的算法一般“计算步骤少”+“空间损耗低”;因为内存便宜、用户关注的是快速,所以大家一般只考虑时间复杂度。时间空间大部分时候是冲突的,所以还会用空间换时间。1)事后统计法:造测试数据,模拟环境,运行一段时间看看效果,就能找到最好的算法。但是.原创 2021-01-13 11:24:44 · 214 阅读 · 0 评论 -
树
1、二叉树:每个结点至多拥有两棵子树,二叉树的子树有左右之分 1.1 二叉树的遍历方法: 前序遍历:访问根结点的操作发生在遍历其左右子树之前,一般说的是 根-左-右 遍历。 中序遍历:访问根结点的操作发生在遍历其左右子树之中(间),一般说的是 左-根-右 遍历。 后序遍历:访问根结点的操作发生在遍历其左右子树之后,一般说的是 左-右-根 遍历。 层次遍历:从根节点开始访问,从上到下逐层遍历,在同一层中,按从左到右的顺序结点逐个访问。...原创 2020-07-28 21:12:23 · 112 阅读 · 0 评论 -
快速排序的魅力
快速排序是一种很棒的排序思想,被称为20世纪最伟大的发明之一。快速排序的基本思想:任取一个元素为中心 将序列中所有比它小的元素放在其前面,比它大的元素放在其后面,从而形成两个子表 对两个子表分别做快速排序,直至子表中仅剩一个元素将原先的一列元素划分成了两个子列元素,通过分而治之的思想进行排序,快速主要体现在两点上:1、这两个子列可以放在不同的进程里面同时运行排序2、根据...原创 2020-04-13 16:48:01 · 186 阅读 · 0 评论 -
时间复杂度
这篇文章目的是分析算法的复杂度问题,关于算法的定义、特性等等问题在这里不作讲解。如何度量算法效率我们知道,算法是解决复杂问题的思路...转载 2020-03-29 15:11:23 · 368 阅读 · 0 评论 -
(数据结构)十分钟搞定时间复杂度(算法的时间复杂度)
我们假设计算机运行一行基础代码需要执行一次运算。int aFunc(void) { printf("Hello, World!\n"); // 需要执行 1 次 return 0; // 需要执行 1 次}那么上面这个方法需要执行 2 次运算int aFunc(int n) { for(int i = 0; i<n; i++) { ...转载 2020-03-23 16:42:55 · 430 阅读 · 0 评论 -
二叉树、平衡二叉树、红黑树
一、二叉查找树:(1)若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值;(2)若它的右子树不空,则右子树上所有结点的值均大于它的根节点的值;(3)它的左、右子树也分别为二叉查找树。二叉树查找的思想是二分查找,查找的次数(效率)取决于二叉树的高度。例:想要搜索值为226的节点,搜索动画过程如下:但是二叉树有个缺陷,一些数一直都是高于、低于根节点,就会导致树...原创 2019-08-14 16:46:44 · 259 阅读 · 0 评论