
算法
文章平均质量分 86
Tanyboye
专注于计算机领域的一枚程序员!
展开
-
24点算法讲解与实现
题目描述:在52张扑克牌中(去掉大小王),随机抽取4张牌,找到所有可能的情况和解。前言 博主曾在网上看到有很多关于24点的算法,但很多都是没有找全所有表达式,要么就是没有去重,而且搜索的时间过长,有些慢的要半个小时才能得到结果。所以经过我的不懈努力,经过几天的研究,目前我的这个24点的算法能够高效的找出所有解的情况。经过测试,平均在0.1几秒左右就可以找到所有情况。原创 2018-01-04 16:17:04 · 29064 阅读 · 4 评论 -
java算法之冒泡排序
1.算法思路冒泡排序是最基础的排序,其思想是依次比较数组中相邻的两个元素,如果前面的数比后面的数大,就交换位置。这样,第一趟排序完成后,最大的那个数一定会被交换到数组的最后去,重复此过程,直到完成整个排序。2.算法分析时间复杂度:算法由2重循环来实现,在时间上依赖输入数据的规模,因此时间复杂度为O(n^2)空间复杂度:由于不依赖额外的内存,只需要特定的临时变原创 2018-02-03 00:15:17 · 181 阅读 · 0 评论 -
MD5加密java实现
/** * 获取大写字母+数字的MD5字符串 * @param key * @return */ public static String getMD5(String key) { char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; try { ...原创 2018-03-14 18:53:26 · 941 阅读 · 0 评论 -
PBKDF2实现
PBKDF2简介常见的加密算法,如MD5,此类算法为单向的,无法通过逆向破解,但由于技术的不断进步,可以通过字典和暴力破解。后来人们通过加盐来增加密码的安全性,但彩虹表的出现让这种方式也变得不安全。以至于出现了现在的PBKDF2算法。PBKDF2算法通过多次hash来对密码进行加密。原理是通过password和salt进行hash,然后将结果作为salt在与password进行hash,多次重复此...原创 2018-03-18 22:15:47 · 9116 阅读 · 0 评论 -
Bcrypt算法
Bcrypt简介Bcrypt相对于MD5等算法来说,特点就是慢,如果说运行一次MD5算法需要几毫秒,那么运行一次Bcrypt可能需要几秒钟。慢有什么用呢?对于同一个算法来说,如MD5,你加密一次的时间越短,那么攻击者在相同的时间内重试的次数也就越多,如果加密一次需要1毫秒,那么攻击者在1秒内可以尝试1000次,如果加密一次需要10毫秒,那么攻击者在1秒内可以尝试100次。通常来说,一个MD5加密的...原创 2018-03-19 10:56:37 · 2332 阅读 · 0 评论 -
7大经典的排序算法总结实现
作者 : liuyang0 来源 : 博客园常见排序算法总结与实现本文使用Java实现这几种排序。 以下是对排序算法总体的介绍。 冒泡排序比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越...转载 2018-05-18 01:28:06 · 307 阅读 · 0 评论 -
海量数据处理 - 找出最大的n个数(top K问题)
前言前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小堆比较好一些。 先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆...转载 2018-05-15 15:05:57 · 5328 阅读 · 0 评论