02 2011 档案
摘要:输入:所输入的文件,至多包含n个正整数,每个正整数都小于n,题目中n = 10^7,如果输入时某个正整数重复出现俩次,就会产生致命的错误,这些整数,与其他任何数据都不相关.输出:以增序形式输出经过排序的整数列表约束至多只有1MB(包括程序本身)可用的主存,但是可以用的磁盘空间是充足的,运行时间至多几分钟,10秒针是最适宜的运行时间.作者第一个方案使用基于磁盘的合并排序.将每个号码用32位整数表示,可以在1MB的空间里存储250000个号码,使用一个带有40个通道的程序,在第一个通道中将前250000的任意整数读入内存,并对它们进行排序,可以使用高效的快速排序,但是完成整个任务,我们要牺牲读文件
阅读全文
摘要:最近有点忙,稍微空闲下来,发篇总结贴。
大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。
下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。
阅读全文
摘要:深入理解SQLite数据库B树实现的结构,从简易的开始不失为一种好的学习方法
阅读全文
摘要:归并排序(Merge Sort)是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。
阅读全文
摘要:在学习程序语言和进行程序设计的时候,交换两个变量的值是经常要使用的。通常我们的做法是:定义一个新的变量,借助它完成交换。代码如下:这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。标准算法最大的缺点(其实根本不算缺点)就是需要借助一个临时变量。那么不借助临时变量可以实现交换吗?答案是肯定的!这里我们可以用至少三种算法来实现,他们是: 1)算术运算 2)指针操作 3)位运算1) 算术运算简单来说,就是通过+和-运算来实现。代码如
阅读全文
摘要:提供两种方法:1、有中间变量 2、无中间变量
阅读全文
摘要:法1、对链表1中的每个节点p1,判断链表2中是否有一个节点p2指向p1loop:p1从head1到最后一个节点loop:p2从head2到最后一个节点 if(p2是否指向p1) 相交 break时间复杂度:O(list1.length * list2.length)空间复杂度:O(1)法2、使用hash表loop:p1从head1到最后一个节点把p1放入hash表table中loop:p2从head2到最后一个节点if(p2在hash表中) 相交时间复杂度:O(list1.length + list2.length)空间复杂度:O(list1.length)法3、将其中一个链表首尾相连,检测另
阅读全文
摘要:数组与指针是两个不同的概念,即使是从编译的层面上来看。不过,访问和操作数组的行为和指针在用法上极为相似。
阅读全文
摘要:各种法则,各种定理。千万别慌。哈哈~
阅读全文