文件中有100万数据,以','号分隔,要求找出最大的10个数,请提供最佳算法。

这百万数据都在文件中,需要一次性全部读出来吗?假如是一千万,基至上亿呢?请从时间和空间复杂度进行详细分析,谢谢~~... 这百万数据都在文件中,需要一次性全部读出来吗?假如是一千万,基至上亿呢? 请从时间和空间复杂度进行详细分析,谢谢~~ 展开
 我来答
luosiyong
2012-04-08 · TA获得超过3256个赞
知道大有可为答主
回答量:1090
采纳率:0%
帮助的人:1612万
展开全部
只找出最大的10个数的话,这个算法复杂度就是O(n)
主要是文件读取需要消耗比较多的时间,也不用一次读出来,一边读,一边处理,维护一个10个元素的集合,放当前的最大的10个数就好了。
读取的时候,如果用scanf之类的,读完是比较耗时的,用getchar之类的自己转换可能会快一些。
另外,更快的办法读取数据就是内存映射来读了。
追问
我想知道你使用的是什么算法以及具体怎么过程,能不能给出具体的复杂度计算,是n,还是2n, 甚至可以更精确,谢谢~~
追答
线性遍历所有数据
维护一个集合(最多10个数)来保存最大的10个数。
遍历完了集合中的10个数就是要找的最大的10个数
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式