算法
初夏0811
爱生活,爱写作,不爱加班
展开
-
JAVA生成短8位不重复的UUID
短8位UUID思想其实借鉴微博短域名的生成方式,但是其重复概率过高,而且每次生成4个,需要随即选取一个。本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六进制,所以将UUID分成8组,每4个为一组,然后通过模62操作,结果作为索引取出字符,这样重复率大大降低。经测试,在生成一千万个数据也没有出现重复,完全满足大部分需求。代码如下,复制可用:一般授权码,二维码等需要唯一不重复且不需要很长的场景用到:package org.sang.test;import java.u原创 2021-05-11 22:20:22 · 23877 阅读 · 0 评论 -
大数据算法之BloomFilter
一、原理把一个字符串哈希成一个整数key,然后选取一个很长的比特序列,开始都是0,在key把此位置的0变为1;下次进来一个字符串,哈希之后的值key,如果在此比特位上的值也是1,那么就说明这个字符串存在了。二、 算法:1 . 首先需要k个hash函数,每个函数可以把key散列成为1个整数2. 初始化时,需要一个长度为n比特的数组,每个比特位初始化为03. 某个key加入集合时,用k个hash函数计算出k个散列值,并把数组中对应的比特位置为14. 判断某个key是否在集合时,用k个hash函数计原创 2021-05-06 23:22:43 · 21797 阅读 · 0 评论 -
二叉树的遍历
一:二叉树的四种遍历方式二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有的结点,使得每个结点被访问依次且仅被访问一次。四种遍历方式分别为:先序遍历、中序遍历、后序遍历、层序遍历。简称:(便于记忆)前序遍历:根左右中序遍历:左根右后序遍历:左右根层序遍历:从上到下(基本不用)二:讲解示例1.前序遍历,所谓的前序遍历就是先访问根节点,再访问左节点,最后访问右节点。如上图所示,前序遍历结果为:ABDFECGHI2.中序遍历,所原创 2021-03-08 21:29:39 · 21693 阅读 · 0 评论 -
java常见经典算法题
1:冒泡排序package org.sang.org.sang.算法;import java.util.Arrays;import java.util.Collections;/** * create by 86159 on 2021/1/12 */public class 冒泡排序 { public static void main(String[] args) { // 冒泡排序是对数组操作,如果是集合,先用list.toArray()转化为数组原创 2021-01-12 23:08:10 · 26860 阅读 · 5 评论