![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
小欧的哈士奇
毕业于中国某个大学,就职于中国某个企业,拥有研发经验好多、好多、好多年.....
展开
-
布隆过滤器-简述
为什么不用Map:当处理海量数据,比如千万上亿时,Map占用的内存极高,性能变差,出现碰撞的Hash碰撞的概率过高时,可能会变回链表。用途布隆过滤器用于判断海量数据内,某个对象是否一定不存在(不存在误判),或者可能存在(存在一定的误判率)原理布隆过滤器器是一个Bit向量或者说是一个Bit数组,数组的每个位置都只有0和1,0代表不存在,1代表存在。当一个key要入库时,布隆过滤器不存储这个key,而是对这个key做N次Hash后得到N个值,这N个值对应数组内的N个位置,并在数组内将这几个.原创 2021-12-04 16:53:06 · 136 阅读 · 0 评论 -
(原创)数组与链表
一、区别1 数组:1.1 优势:数组在内存中的存放是且必须是相连的,这使得其在随机读取的时候有得天独厚的优势。假设某个数组的起始地址为:00,当我们需要读取第5个值时,只需要进行简单的数学运算,就能知道这个值所在的地址是:04,而不需要进行遍历。1.2 劣势:也是因为数组需要的相连存放,所以在插入与删除时效率低于链表。假设当数组申请开辟的空间为10个,当你需要add第11个元素时,就需原创 2017-11-08 20:04:01 · 201 阅读 · 0 评论 -
(原创)递归
一、递归的核心在于基线条件和递归条件例如:下面是一个由1加到n的函数:def add_self(n): if n<=1: return n else: return n+add_self(n-1)其中,第二行的if就是基线条件,else就是递归条件。二、调用栈递归在计算机的内部的实现是通过调用栈实现的。当函数进入递归,调用原创 2017-11-08 20:45:12 · 186 阅读 · 0 评论 -
(原创)选择排序与快速排序及D&C算法的延伸
一、选择排序(尊重原创,转载请注明出处。)选择排序是一种速度较慢的排序算法,运行时间为O(n2),这里只进行简单的逻辑分析和实现。大致是对待分析的数组(或者其它数据结构)尽心一遍遍的遍历,每次都找出里头最大或最小的那个,然后放入一个新的数组。实现如下:def find_max(list): max = list[0] index = 0; for i in ra原创 2017-11-08 21:21:10 · 578 阅读 · 0 评论 -
(原创)散列表 hash table
一、什么是散列表散列表是一种结合了散列函数和数组的数据结构。二、散列函数散列函数是一种将输入映射到数字的函数,它的执行时间为O(1)。散列函数需要满足一下要求:a. 映射必须是一致的,即相同的输入,必须得到相同的输出。b. 它应当尽可能的将不同的输入映射到不同的输出。为什么是尽可能呢?后面我们会在冲突部分提到。那么,散列函数输出的数字有什么用呢?我们可以将该数字对应到数组的原创 2017-11-08 22:38:14 · 250 阅读 · 0 评论 -
(原创)狄克斯特拉算法
一、用途1.广度优先搜索用于计算非加权图中的最短路径2.狄克斯特拉算法用于计算加权图中的最短路径(不能带有负权边)备注:当图的每条边都带有一个数字时,这些数字成为权重。带权重的图称为加权图,反之称为非加权图。二、实现步骤1.从起点开始。2.找到该点最便宜的邻居节点。3.若该节点的开销优于之前记录的开销,则更新该节点的开销及该节点的父节点。4.找到第二原创 2017-11-13 21:10:36 · 395 阅读 · 2 评论 -
(原创)广度优先搜索解决最短路径问题
一、用途广度优先搜索用于解决两种问题:1.从某点到某点是否存在路径?2.若存在,最短的是哪条?二、简单介绍图1.图有点和边组成。2.当图中的所有边的指向都是单向的,这种图叫做有向图。若A指向B,则B为A的邻居。3.当图中存在一条或一条以上的没有箭头的边,即A指向B,且B指向A,这种图成为无向图。其中,A和B互为邻居。4.如下图,其中若从A出发,则B、C、D是原创 2017-11-13 20:23:10 · 6522 阅读 · 1 评论