算法
doraHP
暂时不写
展开
-
记一次流水线工作单元设计/golang
temp原创 2020-09-26 22:13:30 · 161 阅读 · 0 评论 -
记一次图层合并算法设计
一张完整的图像可能是由若干个大小不同的图层组成的。如果由计算机将这若干个图层渲染成一张完整的图像,则需要根据图层的z值(也可以理解为远近关系,z值越大,从视觉角度来看,图层被显现的内容越多),所以,一般渲染过程,就是将图层根据z值进行升序排序,然后从z值最小的图层开始依次渲染。每个图层都是固定大小的矩形(即使生活中我们看到各种形状的图形,它们其实是被包含到一个矩形区域"RGBA画布"中)。 而今天讨论的主题是如何将图层合并,从而减少计算机的计算量(前提:此处可以忽略合并图层带来计算量)。我...原创 2020-08-16 11:59:12 · 517 阅读 · 0 评论 -
记一次对多字段按照优先级分类再进行排序
在数据查询中,有时候会遇到使用两个或两个以上字段对一组数据集合进行排序,较为合理的处理逻辑应该是先按照字段之间的优先级关系将待排序的数据集合递归地以同一字段的值(同一层)升序或降序的方式进行拆分,然后在以由上往下顺(广度优先方式)序对父节点的叶子节点按照指定规则进行排序。 SQL语句中可以使用order by语句对多个字段进行排序(暂不清楚其实现原理,有可能和上面提到的处理逻辑类似)。该篇文章会讨论一种新的处理手段,将所有参加排序的字段按照指定的优先级关系从低到高以字节填充...原创 2020-07-26 16:12:09 · 1442 阅读 · 0 评论 -
记一次大数整除
除法的其实也是减法(应该可以这样说),那么大数除法中,该如何判断一个大数能否被数整除呢?(这里说的数指自然数)比如 a(=100000000000000000000000),就不能被 b(=333)整除,(但是计算机硬件不支持这次计算或者计算结果有误),为了方便理解,这里定义一个函数 h(a, b) ,如果h(a, b) == 0的话,则说明a可以被b整除。大数整除的一种思路:跳过无意义的减法运算过程(意思就是比如100/3,100减去10*3后得余数70,如果余数x(70)可以被y(3)整除,则1原创 2020-06-26 11:04:11 · 310 阅读 · 0 评论 -
素数的判断方法/go实现(4s算出1000w以内的素数)
这篇文章会介绍三种判断素数的方法,其中对第一、二种简单介绍,第三种会详细介绍。特别说明一下, 1不是素数,2是素数。方法一(也是最容易理解的方法):、 若一个数n(n > 2)为素数,则自然数集合 => {[2,]区间}中,一定有一个自然数可以整除n。方法二(素数都是不可整除的,而合数一定可以由素数相乘得到) 若一个数n(n > 2)为素数,则素数集合 => {2, 3, ..., m(m <= )}中的任何素数都不能整除n。方法三(不是合...原创 2020-06-16 10:36:26 · 618 阅读 · 0 评论 -
数学之美-拼图
质数一个很重要的特点:`除了1和它自身外,不能被其他自然数整除`扩展(1)质数m, n相乘得到s的话,s便不再是质数,但是其因数也是唯一确定,即:1, s, m, n(2)质数集合S => {a0, a1, ..., an} 中任意个不同的质数相乘得s,如果n是一个质数,且n是s的因数,则s可以被n整除。自然数的前100个质数为:2357111317...523541应用场景背景:一块完整的图像被拆散成若干个碎片,而集合中又有若干个这样的图像被拆散。给你原创 2020-06-07 10:09:56 · 177 阅读 · 0 评论 -
【分享】 使用堆作为底层数据结构来优化”红包分配算法“
我之前的博客中用c语言写了一个红包均分算法,用到的数据结构是链式数组,今日用堆改进此算法-相较稳定的红包算法实现/c语言实现,使用的语言是Go语言。 核心算法相同(不了解的同学可以点击上面链接阅读),所以直接上代码://使用堆完成红包分配算法package mainimport "fmt"//用于影响分配结果的因子var yz float32 = 0type ...原创 2020-02-18 00:17:48 · 180 阅读 · 0 评论 -
堆排序的实现原理分析(剖析上浮下沉操作, 让你重新认识堆排序)
网络上关于堆排序的算法博客多是给图给真相(因为翻了很多文章还是不清楚,堆排序的过程是什么?所以自己来搞),今天我介绍一下我对堆排序的理解及实战分析。 先介绍一下堆:它分最大堆和最小堆,二者的不同就是父节点和子节点的关系;最大堆要求父节点要比子节点大,而最小堆要求比父节点要比子节点小。其次是堆所依赖的数据结构,它本身是一颗完全二叉树,由于完全二叉树特性,父节点和左右子节点间位置的关...原创 2020-02-13 22:36:37 · 1477 阅读 · 0 评论 -
记一次算法优化
这段时间刷了刷letcode,编程的乐趣可能就是`它就在那儿,而你要征服它`(哈哈哈),刷过一道题时,会有种莫名其妙的快感!本篇文章记录了我刷的一道算法题并经历不断优化和改进且最终"攀顶"的历程。题目优先:letcode-44_通配符匹配题解:我的题解'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。示例:(抄自 letcode)输入:s ...原创 2020-01-25 14:23:14 · 486 阅读 · 0 评论 -
八皇后-go实现
八皇后游戏规则说明: 在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。(百度百科)延申到n皇后,规则已知,算法的空间复杂度为O(n^2), 空间复杂度为O(n),package mainimport "fmt"//判断该位置是否满足八皇后规则func eJudge(e []int, i int)...原创 2020-01-22 21:40:47 · 224 阅读 · 0 评论 -
白盒用例测试程序/go实现
简单介绍一下白盒测试: 源码公开,清楚传参、返回值和处理逻辑;我们在测试一个方法或者接口时,通过传入合法或者非法的参数,并且抽选一些具有代表性的值作为测试用的合法传参,通过模仿正常请求,检测方法或接口内部的异常。周末没事,又想学习一下go,最近又老写bug,所以就想到用go写一个测试进程,实现白盒`用例`测试用到的数据结构简单介绍一哈:用Clinet表示一个正常的客...原创 2020-01-04 17:22:44 · 429 阅读 · 0 评论 -
数学之美-唯一ID生成算法
一切的合理性都可以通过数学来解释(自己瞎编的),今天就用数学给大家变个戏法,实现一个唯一ID生成器;而用到的数据知识包括排列组合+质数特性应用: 先给出一个数学定义:在一个质数集合中随意取出2n个质数,让他们两两相乘然后加和得m,放入后重新再取出2n个质数,经过相同步骤计算得出z,除非前后取出的质数相同且两两相乘的组合也相同,否则m != z(我拿着笔经过一阵噼里啪啦,验证得来的)。...原创 2020-01-02 23:25:17 · 1502 阅读 · 0 评论 -
snowflake算法变种/php实现
snowflake是一种分布是唯一id生成算法,简单而又强大。但其依赖实体主机作为标识,而导致了唯一id的组成部分中关于mechine的部分需要实体主机的标识符来映射对应的二进制数值才能正常提供服务(其算法的本意)。而本程序改进如下,借用redis的string类型的key来代替这部分`mechine部分二进制数值`,当一个snowflake唯一id生成器服务进程启动时,会先随机获取一个m...原创 2019-11-03 12:16:20 · 473 阅读 · 0 评论 -
相较稳定的红包算法实现/c语言实现
红包的分配分布,个人认为能够运用到正态分布是极好,运气好的人少,运气差的人也少,但是本篇算法并不打算利用正态分布的特性来实现分配红包算法(本人太菜),而是一个产生红包相对稳定,一定程度上也算一个是符合正太分布特性的算法(世间很多事物的分布一定程度上都满足正态分布,我的理解:1、总量是固定不变的(具体特性记不得了),;2、分布呈现的是两边少,中间多;)。下面介绍以下该算法的思路中涉及比较重要的点...原创 2019-08-31 13:02:16 · 672 阅读 · 0 评论