2011-10-04 52 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

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