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