Classificar, está usando o algoritmo de classificação de mesclagem R-way. A maneira mais rápida de fazer o seu trabalho seria:
sort myfile
isso implica complexidade de tempo O (n logn) e tempo O (n).
Se você particionar os dados, provavelmente pagará em termos de tempo.
O código acima tem um problema. Com a ordenação -m, os arquivos não têm garantia de serem mutuamente ordenados.
do manual do unix:
-m, --merge
merge already sorted files; do not sort
por exemplo,
arquivo1: a b c k l q
arquivo2: d e m
sort -m file1 file2
a b c k l q e m
que não está em ordem.
Além disso, o fato de os elementos estarem em lugares menores que N não garante uma saída ordenada com o código acima:
arquivo: a e b c h f g
no arquivo N = 3 e todos os elementos são menos de 3 lugares do que seu lugar correto
arquivo1: h f g, arquivo2: b c d, arquivo3: a e
sort file1
produz:
arquivo1: fgh, arquivo2: bcd, arquivo3: ae
e
sorm -m file3 file2 file1
saídas:
a e b c d f g h
que está errado.