
数据结构与算法
yamaxifeng_132
努力、奋斗
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
25匹马,找出最快的3匹,但是只有5个赛道,每次比赛只能得到5匹马的速度排序,那么最少需要多少次比赛
笔试题:25匹马,找出最快的3匹,但是只有5个赛道,每次比赛只能得到5匹马的速度排序,那么最少需要多少次比赛在网上搜了下答案,好像不靠谱。最后在英文网站上找到正确的答案:? 次参考:http://www.programmerinterview.com/index.php/puzzles/25-horses-3-fastest-5-races-puzzle/1-5 场:将25匹马分为5组,每组5匹,得到下面的排序,每组最快的马在左侧,即X1、X6、X11、X16、X21分别是每组中最快的。转载 2021-04-18 16:01:27 · 342 阅读 · 0 评论 -
解决hash冲突的三个方法
通过构造性能良好的哈希函数,可以减少冲突,但一般不可能完全避免冲突,因此解决冲突是哈希法的另一个关键问题。创建哈希表和查找哈希表都会遇到冲突,两种情况下解决冲突的方法应该一致。下面以创建哈希表为例,说明解决冲突的方法。常用的解决冲突方法有以下四种:1 开放定址法这种方法也称再散列法,其基本思想是:当关键字key的哈希地址p=H(key)出现冲突时,以p为基础,产生另一个哈希地址p1,如果p...转载 2020-04-08 21:56:14 · 301 阅读 · 0 评论 -
两个非常大的数字(超过Long最大能表达的范围)的加法运算(不能使用JAVA现成的类)
思路: 大数用String类来保存。大数的每个位分别相加,保留每个位的进位给下一位,最后结果依然保存在String类中。public class BigNumber { public String add(String a, String b) { String ret = ""; int lenA = a.length();...转载 2019-05-08 13:57:04 · 367 阅读 · 0 评论 -
布隆过滤器(Bloom Filter)原理以及应用
布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。hash原理Hash (哈希,或者散列)函数在计算机领域,尤其是数据快速查找领域,加密领域用的极广。其作用是将一个大的数据集映射到一个小的数据...转载 2019-04-23 10:49:49 · 326 阅读 · 0 评论 -
BloomFilter过滤器过滤算法的简单实现(学习笔记)
BloomFilter主要包括两种操作:add():添加元素到其中contains():判断一个元素是否在其中,(没有就是没有,说了有但实际上有可能没有)关于contains()函数:①,如果结果返回false:则元素一定不再其中②,如果返回true,则不一定就在其中,这就是误差BloomFilter实现(m(byte数组的大小)+k(hash次数)+n(需要存储的数据量)...转载 2019-01-30 18:04:44 · 775 阅读 · 0 评论 -
Bloom filter 过滤(布隆过滤算法)原理
一,什么是Bloom filterBloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员,这种检测只会对在集合内的数据错判,而不会对不是集合内的数据进行错判,这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见 Bloom filter 是...转载 2019-01-30 17:56:42 · 239 阅读 · 0 评论 -
SkipList跳表基本原理
为什么选择跳表目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参考网上的代码,相当麻烦。用跳表吧,跳表是一种随机化的数据结构,目前开源软件 Redis 和 LevelDB...转载 2019-01-24 09:34:55 · 129 阅读 · 0 评论 -
大数据处理算法一:Bitmap算法
腾讯面试题:给20亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中并且所耗内存尽可能的少?解析:bitmap算法就好办多了所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。例如,要判断一千万个人的状态,每个人只有两种状态:男人,女人,可以用0,转载 2017-01-11 14:18:46 · 715 阅读 · 0 评论 -
8大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字转载 2016-12-02 20:33:42 · 514 阅读 · 0 评论 -
堆排序原理及算法实现(最大堆)
堆排序堆排序是利用堆的性质进行的一种选择排序。以下先讨论一下堆。1.堆堆实际上是一棵全然二叉树,其不论什么一非叶节点满足性质: Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]或者Key[i]>=Key[2i+1]&&key>=key[2i+2] 即不论什么一非叶节点的keyword不大于或者不小于...转载 2016-12-02 20:17:23 · 299 阅读 · 0 评论