摘要:先阐述一下问题: 现在有一个非常庞大的数据,假设全是 int 类型。给出一个数,判断这个数是否在其中(尽可能的高效)。 题目要求 文章给出了思路:首先想到的是 Hash 算法,它的时间复杂度是 O(1),在常量时间判断出数据是否存在。文章给出的办法是直接使用了 Java 的集合对象 HashSet(
阅读全文
coding是一种爱好,知识需要系统学习看到小咪呢,就会很快乐 |
随笔分类 - 数据结构&算法
摘要:先阐述一下问题: 现在有一个非常庞大的数据,假设全是 int 类型。给出一个数,判断这个数是否在其中(尽可能的高效)。 题目要求 文章给出了思路:首先想到的是 Hash 算法,它的时间复杂度是 O(1),在常量时间判断出数据是否存在。文章给出的办法是直接使用了 Java 的集合对象 HashSet(
阅读全文
摘要:问题 某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新。现在要为该网站设计一种算法,在每次用户登录时显示其当前积分排名。用户最大规模为2亿;积分为非负整数,且小于100万。 PS: 据说这是迅雷的一道面试题,不过问题本身具有很强的真实性,所以本文打算按照真实场景来考虑,而不局限于面试题的
阅读全文
摘要:Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。使用场景:数据量为100亿、空间受限制的黑名单网页系统、垃圾邮件过滤系统、爬虫的网址判重系统等。 实例 为了说明Bloom F
阅读全文
摘要:1.堆 堆(Heap))是一种重要的数据结构,是实现优先队列(Priority Queues)首选的数据结构。由于堆有很多种变体,包括二项式堆、斐波那契堆等,但是这里只考虑最常见的就是二叉堆(以下简称堆)。 堆是一棵满足一定性质的二叉树,具体的讲堆具有如下性质:父节点的键值总是不大于它的孩子节点的键
阅读全文
摘要:阅读目录 1. 直接插入排序(Straight Insertion Sort) 2. 希尔排序(Shells Sort) 3. 直接选择排序(Straight Selection Sort) 4. 堆排序(Heap Sort) 5. 冒泡排序(Bubble Sort) 6. 快速排序(Quick S
阅读全文
|