为面试的准备!
johnny710vip
微信公众号搜索:【持续读书】专注于优质内容分享
展开
-
面试中的海量数据处理问题!
本文分为俩部分,第一部分为10道海量数据处理的面试题,第二部分为10个海量数据处理的方法总结。有任何问题,欢迎交流、指正。 第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法, 比如模1000,把整个大文件映原创 2011-11-02 19:49:36 · 1797 阅读 · 1 评论 -
各种排序算法的稳定性和时间复杂度小结
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择排序:O(n*n)快速排序:平均时间复杂度log2(n)*n,原创 2011-11-02 21:41:04 · 961 阅读 · 0 评论 -
编程之美系列之二——寻找出现频率超过一半的数
问题描述: 现在有一数组存放int型整数,数字有重复,且有一数字出现的频率超过了50%,请找出这个数字。 补充:主要考虑数据量很大的情况。 问题求解:分析: 最直接的方法就是对数组中所有的数字排序,然后再扫描一遍,统计各个数字出现的次数,如果某个数字出现的次数超过一半,则输出这个数字。显然这个算法的时间复杂度是O(N * log2N + N原创 2011-11-02 22:07:50 · 899 阅读 · 0 评论 -
C语言中函数参数的入栈顺序!(感觉挺好,在一个帖子找到的)
栈,我想大家都知道。栈,是硬件。主要作用表现为一种数据结构,是只能在某一端插入和删除的特殊线性表。下面介绍C语言中函数参数的入栈顺序是怎样的。 对技术执着的人,比如说我,往往对一些问题,不仅想做到"知其然",还想做到"知其所以然".C语言可谓博大精深,即使我已经有多年的开发经验,可还是有许多问题不知其所以然。某天某地某人问我,C语言中函数参数的入栈顺序如何?从右至左,我随口回答。为什么是从右原创 2011-11-02 22:33:06 · 1034 阅读 · 0 评论 -
用两个栈实现队列的源代码
/* * 用两个栈实现队列 */#include#includetypedef struct stack{ //用来保存元素 int *a; //当前的下标 int loc; //栈中最多可以容纳的元素个数 int max;}st;/* * 初始化指定大小的栈 */st *initstack(int num){ st *s原创 2011-11-02 22:38:42 · 797 阅读 · 0 评论 -
杨氏矩阵查找!
杨氏矩阵查找1. 简述 杨氏矩阵中,每行元素是递增的,每列元素也是递增的。即a[i][j]2. 原理 从矩阵的左下角或者矩阵的右上角处开始递归运行,以左下角为例,value为要查找的值,(i,j)为当前矩阵中的位置,初始为(M-1, 0)。 如果超过了矩阵范围则说明不存在这样的元素,返回-1,-1。 否则的话,如果当前位置的值大于va原创 2011-11-11 16:25:24 · 2643 阅读 · 1 评论 -
统计二进制串中的1的个数 .
思路:使用一个0x1的标记串(一开始除了最右边一位为1外,其他位都为0)与给定的二进制串比较,若两者与运算之后值不为0,则说明二进制串的该位为1,记数变量+1;若为0,则说明该位为0, 记数变量不变。每位比较结束之后标记串左移一位(左移是在右边补0),继续比较,直到标记串为0为止(为1的位一直左移,最终为0)代码:int function (unsigned int bin){原创 2012-05-09 22:17:02 · 775 阅读 · 0 评论 -
基于英文单词的快速HASH索引算法
因为有项目需要,要做一个类似ispell 的软件,其中会产生大量的对单词的查找操作,于是经过一翻研究,得出以下HASH算法,经过验证比一般的查表的FNV HASH算法产生的分布曲线基本没什么两样,并且在大部分的不同字典下,本算法要比查表的FNV HASH算法表现出速度更快,分布更均匀。但是因为是实验结果,所以暂时还没得出有效的数学推论,但是从大量的不同的字典测试数据来看,此算法确实效率不 错。转载 2012-05-09 21:10:10 · 2791 阅读 · 0 评论