terça-feira, setembro 11, 2007

Algorítmos de Ordenação - parte VIII

Para fechar a série de posts, um exemplo um pouco mais completo.

O programa Ordena é um utilitário de ordenação, comandado pela linha de comando (o que é bem apropriado, visto que a operação de ordenação é algo inerentemente "batch" e não interativa). Como características importantes, destaco:
  • Escrito em C ANSI para maior portabilidade (testei no Windows com o Visual C 6 e no GCC 3.2. sob Linux).
  • Ordenação de arquivos texto, com chaves alfanuméricas: o programa ordena linhas finalizadas por CR LF (LF no Linux). Para reduzir a movimentação na memória, ordena os registros indiretamente através de um vetor de ponteiros.
  • Suporte a múltiplas chaves: como comentei na introdução, basta comparar as chaves uma a uma até achar a primeira que tenha diferença.
  • Ordena arquivos maiores que a memória: o arquivo é ordenado em blocos, que depois são combinados (merge). O tamanho do bloco pode ser definido na linha de comando (útil para exercitar esta parte do programa).
  • Suporta os algorítmos BubbleSort, HeapSort, QuickSort e ShellSort.
Os fontes estão comentados de forma compatível com o Doxygen, o que permite gerar documentação em formatos HTML e CHM.

O programa pode ser baixo daqui.

Nenhum comentário: