2012-02-03 2 views
0

입력 파일에서 많은 양의 문자열을 정렬하고 Java의 새 파일로 정렬 된 결과를 인쇄하는 방법에 대한 아이디어가 있습니다. 요구 사항은 입력 파일이 매우 클 수 있다는 것입니다. 솔루션의 성능을 고려해야하므로 아이디어가 필요합니까?많은 양의 문자열을 Java에서 정렬하는 효율적이고 확장 가능한 방법

+0

가능한 [매우 큰 파일을 정렬하는 방법] (http://stackoverflow.com/questions/7918060/how-do-i-sort-very-large-files) –

+0

이것은 [매우] http://stackoverflow.com/questions/2087469/sort-a-file-with-huge-volume-of-data-given-memory-constraint) [common] (http://stackoverflow.com/questions/8832822/) tint-in-java) [질문] (http://stackoverflow.com/questions/7918060/how-do-i-sort-very-large-files). – Dmitri

+0

"극도로 큰"을 정의하십시오 - 어느 정도의 크기입니까? GB? 결핵? 더? – DNA

답변

2

External Sorting 기술은 일반적으로 방대한 양의 데이터를 정렬하는 데 사용됩니다. 이것이 당신이 필요한 것일지도 모릅니다.

externalsortinginjava은 이에 대한 Java 라이브러리입니다.

1

SQL 데이터베이스를 사용할 수 있습니까? 정렬 가능한 열 또는 섹션이 색인 된 모든 데이터를 표에 삽입 한 경우 정렬 된 결과를보다 효율적으로 출력 할 수 있습니다 (그렇지 않을 수도 있음). 이 솔루션은 데이터의 양이 가용 ​​RAM의 양보다 클 경우에도 도움이 될 수 있습니다.

얼마나 큰지 그리고 목적이 무엇인지 아는 것은 재미있을 것입니다.

+0

무언가를 정렬하는 데 많은 오버 헤드가 걸린 것처럼 보입니다. 어떤 간단한 B- 트리 구현보다 SQL의 이점은 무엇입니까? – Dmitri

+0

사용할 수있는 DB가 없습니다. – Ruper

1

메모리에서 읽을 수있는 양으로 파일을 분리하십시오. 각 금액을 정렬하고 파일에 쓰십시오. (모든 것을 메모리에 넣을 수 있다면 완료) 결과 파일을 병합하여 하나의 정렬 된 파일로 정렬합니다.

CPU 효율성을 높이기 위해 기수 정렬 형식을 사용할 수도 있지만 주요 병목 현상은 모두 다시 작성하고 다시 읽는 것입니다.

관련 문제