淘宝的一道面试题
淘宝的一道面试题在一个100G的文件里有一堆数字,试找出100个最大的数字?!
【只要求写出,解题的思想及其所用到的知识,因为完整的解题过程太长】 问题难点为文件大小达100G,假如文件大小为1k,这个问题很好解决。
所以,把文件进行分割,每块中取最大的100个数字,再把各块的100个数字进行比较。
则所需时间可限制在可接受范围内。
回复 1# 的帖子
一点想法:仅供参考,不知对否。建一个100的最小堆来存储最大的100个数,遍历整个文件并不断更新堆可得结果,需要进行优化以满足时间要求,比如遍历方式等,将文件分块之类的…… 不错,顶。这道题有点意思。 这是测试的面试题?? 多线程+队列 100G文件里有一堆数字?请问是100G中全部为数字吗?还是100G里有的是数字,还有不是数字的?
如果全为数字,写个C的程序,冒泡排列就可以
如果不是全为数字,先要找出是数字的,再排列! 我也想到了冒炮排序法 ::ysssn::: 算法快忘没了,得补补了 借力实现 冒泡的话 估计100G 的数据 估计计算量太大了 无法实现吧就算CPU 受的了 要跑多长时间啊
回复 7# 的帖子
问题是100G啊, 100G里全部是数字 2# 回答的很好, 我当时也这么想的, 我是按1024字节, 1024字节 分割的 弱弱地问下,文件有索引吗? ::JFBQ00125080410a:::分块取前100个,块内再按算法由大到小取前100个 这道题类似之前在论坛看到的,在100G的文件中,查找中值 1.算法的话,先找出所有的数字,然后大顶堆排序
2.最简单的是导入数据库,直接一个select,然后按大小排序 集思广益 嗯……没思路……
最大的只有一个吧,100个还能称“最” 这算什么测试?
页:
[1]
2