原题如下:

有一个100G大小的文件里存的全是数字,并且每个数字见用逗号隔开。现在在这一大堆数字中找出100个最大的数出来。

我认为,首先要摸清考官的意图。是想问你os方面的知识,还是算法,或者数据结构。

如果是os: 无疑是外排序算法的选择。100g文件在当前的环境下是无法全部读入内存的。

如果是算法:我觉得这个题考虑排序就是错的,只需要比较。找出最大的即可。

无论是哪种,都不需要一个实际代码的解决方案。只提供思路就可以了。所以,这道题也可以从面试的角度去回答而不是技术层面回答。

至于在技术层面有没有必要研究这个问题,那就是个人有个人看法了。

比较机灵的回答:

继续询问考官:这100g的文件是不是已经排序好了的?

如果已排序,那还不是信手拈来?

比较极端的回答:

请问:
1,你使用的什么操作系统,100G的文件,NTFS的?vista还是win7的?内存有多少大?
2,如果里面的数字小于100个怎么办?
3,如果里面的第一个数字就是100G-198个字节,那么java是无法处理的,请给我一个可以处理的语言出来。
4,我知道你会说假设,但是,程序员的任务是解决实际问题,一切皆以实际问题出发。任何一个理论都是有实际模型的。
5,不知道是谁命的题,我建议他命题严谨点,我不希望有这样的同事或者上级,更不希望将来贵公司因为这样的人毁了前途。

关于比较数据思路新颖的回答:

如果全都是正整数的话,可以先比较长度,挑出长度最长的一类,然后再排序挑出前100,如果最长的一类不足100个,就在长度-1的一类里选...........

(引用http://topic.csdn.net/u/20091013/10/d5d371dc-6dec-4034-bf31-432a47ffce96.html 3楼 ZX_ARES

个人比较喜欢的回答:

我把这个算法分为两个阶段。这个是基于概率统计的算法。用统计的方法
有时比专家系统还有效,这是从开复老师的书《世界因你不同》里学到的。

第一,先期学习阶段:

先读入文件中前10万个数(具体多少视情况定),找出其中最大的100个数,
保存在一个数组MaxAry[100]里.(指针链表)

第二,正式查找阶段:

读入文件中一个数,并与MaxAry中最小的数(例如是MaxAry[100])比较。
如果这个数比MaxAry[100]小则读入下一个数继续比较。
如果比MaxAry[100]大的话,则将其排入MaxAry中适当位置,继续读入下个数……

算法解释:
10万个数中选出前100个大数,这意味着之后的数小于这100个数的概率是0.999,
也就是说1000个数中只有1个数需要插入MaxAry中。而随着读入数的个数增加,需
要插入MaxAry中的概率越小,效率也越来越高。相当于一个自学习的进化算法。
这个算法的理想前提是文件中的数据分布比较均匀,最差的情况是文件中的数据越往后越大。

(引用http://topic.csdn.net/u/20091013/10/d5d371dc-6dec-4034-bf31-432a47ffce96.html )

除了第一个回答无论是哪种方法,无疑,肯定是要将100g的文件读一遍的。而且是边写边处理

此外的回答还有多线程和分段排序再汇总比较。

关于多线程,我无法给出理由反驳。本身对多线程的知识就不牢靠所以不评论。

而分段排序再汇总我有疑问:如果分段后提取出来的最大的100个数字,比另一端里被舍弃的小数字还小呢?

基于上,我觉得还是要找好回答点。是100g?还是处理思路?

这个要看个人的思路。

以上回答,仅作提示。

参考:2010支付宝西安最新笔试题..求高手给出算法和思路

关于“100g文件全是数组,取最大的100个数”解决方法汇总的更多相关文章

  1. MyEclipse打开JSP文件报"Failed to create the part's controls"解决方法汇总

    有时候,打开别人的开发环境中导过来的项目的JSP文件,会出现“Failed to create the part's controls”的错误! 解决的方法有: 方法1:关闭myeclipse的jsp ...

  2. 解压tar.gz文件报错gzip: stdin: not in gzip format解决方法

    解压tar.gz文件报错gzip: stdin: not in gzip format解决方法 在解压tar.gz文件的时候报错 1 2 3 4 5 [Sun@localhost Downloads] ...

  3. Javascript获取数组中的最大值和最小值的方法汇总

    比较数组中数值的大小是比较常见的操作,下面同本文给大家分享四种放哪广发获取数组中最大值和最小值,对此感兴趣的朋友一起学习吧   比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用 ...

  4. 转:导出csv文件数字会自动变科学计数法的解决方法

    导出csv文件数字会自动变科学计数法的解决方法   其实这个问题跟用什么语言导出csv文件没有关系.Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科 ...

  5. Linux文件虚拟机系统只读Read-only file system的快速解决方法

    问题描述:上周公司的私有云(底层架构是Openstack+KVM,目前稳定性还不够好,开发团队在改进中)一个计算节点挂掉,之后恢复后发现这个计算节点的所有Linux系统都变成只读了,复制文件提示:Re ...

  6. .NET上传大文件时提示Maximum request length exceeded错误的解决方法

    使用IIS托管应用程序时,当我们需要上传大文件(4MB以上)时,应用程序会提示Maximum request length exceeded的错误信息.该错误信息的翻译:超过最大请求长度. 解决方法: ...

  7. Office 2010 打开文件后所有的格式成了时间的解决方法

    最新不知道什么原因,每一个 Excel 文件打开后,时需的数据都成了时间格式. 而且改都改不了,改了后第二次打开又成了这个样子. 最后找到解决方法. 如下动画,将 [$F400] 数据格式删除就可以. ...

  8. vs2015 系统找不到指定的文件(异常来自HRESULT:0x80070002)问题的解决方法

    vs2015 创建mvc项目时,弹出错误信息内容(系统找不到指定的文件(异常来自HRESULT:0x80070002)) 弹出窗体如下图所示: 导致整个原因是:未安装NuGet包 解决方法: 1)打开 ...

  9. win服务器 文件上传下载出现“未指定的错误” 解决方法汇总

    环境 WIN平台IIS服务器   经常出现于ASPX页面 汇总 1.权限问题 出现场景 : 基于ACCESS数据库   原因解析 : 1.首先需要排除自身问题,例如建表使用关键字,格式错误,插入数据与 ...

随机推荐

  1. jQuery浮窗图片到页面中间的代码兼容移动端

    jQuery浮窗图片到页面中间的代码兼容移动端 <!doctype html> <html> <head> <meta charset="utf-8 ...

  2. vb Replace 实现

    今天改一个VB程序时发现程序自带的replace 函数不知什么原因竟然不好用了 所以就自己写了一个玩玩 记录一下 'XGZ '替换字符 Private Function Replace1(ByVal ...

  3. C#集合中根据多个字段分组 group by linq表达式

    void Main() { var empList =new List<Employee> { , FName = , Sex = 'M'}, , FName = , Sex = 'F'} ...

  4. python每日经典算法题5(基础题)+1(较难题)

    一:基础算法题5道 1.阿姆斯特朗数 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数.判断用户输入的数字是否为阿姆斯特朗数. (1)题目分析:这里要先得到该数是多少位的,然后再把 ...

  5. HDU2023求平均成绩 - biaobiao88

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2023 求平均成绩 Problem Description 假设一个班有n(n<=50)个学生,每 ...

  6. 在centos下安装rar解压.rar压缩包

    CentOS本身不自带rar环境,因此对于rar文件无法直接解压,需要先配置rar环境. 首先需要确定自己的系统是64位还是32位的,通过这个命令: [root@localhost]# uname - ...

  7. python如何以表格形式打印输出

    好久不见,风水轮流转,我竟然写写写python了 近日有个小需求,要求收集统计一些信息上报,并直接在后台控制台打印,写入日志 为了美观,需要以表格形式展现数据,形如 虽说可以用 prettytable ...

  8. Mysql-修改用户连接数据库IP地址和用户名

    将用户连接数据库(5.7.14-7)的IP地址从 10.10.5.16   修改为 10.11.4.197 Mysql> rename user 'username'@'10.10.5.16' ...

  9. Odoo中的env详解

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826382.html 一:environment environment类提供了对ORM对象的封装,同时提 ...

  10. Lua语法要点2

    [Lua语法要点2] 1.Lua函数 function 可以添加 local 关键字.添加后为局部函数,不添加(默认)为全局函数.return 可以返回多个返回值,以, 分隔. 使用 ... 来表示变 ...