Problema com ordenação externa em java

1 resposta
G

Pessoal estou com um problema. Tenho que ordenar um arquivo com 500.000 registros, mas esse arquivo não cabe na memória, daí preciso dividi-lo em 5 unidades, cada uma com 100.000 registros, pois é o máximo que cabe na memória. Até aí tudo bem, consegui dividir em 5 unidades com 100.000 registros cada. Mas agora eu preciso ordenar cada unidade dessa, sendo que os registros possuem 5 campos cada e é necessário ordenar pelo 4º campo, que é uma string. Depois de ordenar cada unidade com 100.000 registros cada, tenho que mesclar, usar o mergeSort nessas 5 unidades para formar um único arquivo ordenado com os 500.000 registros. Detalhe, o campo que preciso ordenar em cada unidade é o 4º e é uma string. Gostaria muito da ajuda de vocês. Qualquer coisa posso postar o código que fiz até dividir nas 5 unidades. Desde já agradeço a atenção de todos. Ah, lembrando que tem que ser em java :slight_smile:

1 Resposta

E

Se você já tem os arquivos ordenados, é relativamente simples fazer o “merge”.

A história é muito simples - faça o seguinte: abra todos os arquivos e leia uma linha de cada vez.

Veja qual é a menor delas (ou seja, qual delas tem o 4º campo menor) e a escreva no arquivo, e ao mesmo tempo leia a próxima linha do arquivo de onde você escolheu a linha menor.

Se essa tarefa for algo que você pode automatizar usando um script você pode usar o “sort” do Cygwin (se estiver no Windows) ou o /usr/bin/sort (Linux, Unix) para fazer tanto o sort de cada arquivo quanto o merge (nesse caso, passe o parâmetro -m).

Criado 3 de outubro de 2012
Ultima resposta 4 de out. de 2012
Respostas 1
Participantes 2