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

내 페이지 크기가'4k'이면 입출력은'10^6 * 4/4k'이 될 것입니다. 맞습니까? – Alcott

+0

네, 정확히 그 뜻입니다 :-) –