随笔分类 - 数据结构与算法 / 海量数据算法
海量数据算法
摘要:一、题目 如何判断一个数是否在40亿个整数中 二、题解 2.1《编程珠玑》给出的方案 我们把40亿个数中的每一个用32位的二进制来表示,假设这40亿个数开始放在一个文件中。 然后将这40亿个数分成两类:1.最高位为0;2.最高位为1。 并将这两类分别写入到两个文件中,其中一个文件中数的个数<=20亿
阅读全文
摘要:一、题目 10亿int整型数,以及一台可用内存为1GB的机器,时间复杂度要求O(n),统计只出现一次的数。 二、分析 首先分析多大的内存能够表示10亿的数呢?一个int型占4字节,10亿就是40亿字节(很明显就是4GB),也就是如果完全读入内存需要占用4GB,而题目只给1GB内存,显然不可能将所有数
阅读全文
摘要:一、题目 在10亿数字的文件中找到最大的前100个数字。 二、分析 2.1 排序方法 快速选择(Quick Select)和快速排序(Quick Sort)两个算法的作者都是Hoare,并且思想也非常接近:选取一个基准元素pivot,将数组切分(partition)为两个子数组,比pivot大的扔左
阅读全文