2011-10-04 50 views
0

我被一位面试官问到,问题很简单,find the top 100 from 1 million integers (32-bits)关于文件I/O的困惑

当我解决问题时,我想如果我put all the 1 million integers into the memory,这将占用4 MB space

我的问题可能有无关的面试问题,但在这里它是:

如果100万个整数是在一个文件num.txt店,并进一步,我想文件和put them in memoryread the all out(将它们存储在数组中),然后how many IO will it take

+0

其实,先生,最大的最大3.8兆字节。除非每个整数都使用全部32位小数,否则可能会得到小得多的结果。对?假设百万位数的一半只有16位,只得到2.86102295兆字节。 – FreeSnow

+0

@DadeLamkins,是的,你说得对,但是我想知道的是,如果我想从文件中读取所有32位整数,它应该采用多少IO。 – Alcott

回答

1

你想在这个问题上做什么,如果扫描。 你想拥有一个数组,或者可能是一个优先队列,它拥有100个整数,并且只存储你看到的最大的100个整数。

你不想在当时的文件中采取一页,也许使用像mmap之类的东西。

IO的数量将是1mio的大小。整数除以页面大小。

+0

你的意思是说,如果我的pagesize是'4k',那么IO将是'10^6 * 4/4k',对吧? – Alcott

+0

是的,这正是我的意思:-) –