2013-11-22 9 views
0

디스크에 임의의 순서로 저장된 고정 크기 값이 많습니다 (수백만 개). 나는 같은 순서의 값을 메모리에 다른 순서로 저장한다. 값을 디스크의 메모리에있는 순서대로 저장해야합니다. 문제는 다음과 같습니다. 한 번에 디스크에 각 값의 복사본을 적어도 하나씩 유지해야합니다. 즉, 내구성이 있어야합니다.디스크의 가치를 일정하게 재정렬하십시오.

임시 저장 공간이 많지만 내구성 디스크의 공간이 매우 작기 때문에 (값이 약 60 % 만 차지함) 작업 할 RAM이 상당히 많습니다. 값의.

디스크에 값이 주어지면 메모리에서 매우 빠르게 찾을 수 있습니다. 그러나 그 반대는 사실이 아니며, 기억에 가치가 주어지면 디스크에서 그것을 발견하는 것이 매우 느립니다.

이러한 제한 사항을 감안할 때 가능한 한 빨리 메모리에서 디스크로 값의 순서를 전송하는 가장 좋은 알고리즘은 무엇입니까?

답변

0

정렬 문제가있는 것 같습니다. 비교기는 RAM의 요소 순서입니다 (요소 xy보다 큰 것입니다. x가 RAM에서 y 뒤에 나타나는 경우).

external sort을 사용하여 해결할 수 있습니다.

복제본을 허용하는 경우 비교기가 유효한지 확인하기 위해 더 많은 처리가 수행되어야합니다 (동일한 값을 열거하고 각 복제본에 'dupe_id'를 할당하여 해결할 수 있음 - RAM 및 디스크에)