sexta-feira, agosto 10, 2007

Algorítmos de Ordenação - parte VII

Vamos ver neste post o primeiro exemplo, que é um programa Windows para demonstração dos algorítmos.

A Interface Com o Operador

Para visualizar as chaves sendo ordenadas usei bolinhas coloridas que representam os números de 0 a 99. A cor varia conforme a chave do vermelho até o azul.

Um conjunto de radio buttons é usado para selecionar o algorítmo. Botões permitem embaralhar as chaves, executar a ordenação ao o final e executar a ordenação passo a passo. Outros dois botões permitem ver o diálogo Sobre e encerrar o programa.

Um listbox é usado para apresentar algumas mensagens de acompanhamento durante a ordenação.




O Código

Como originalmente eu pretendia enviar este programa para um site americano, os comentários e os nomes de variáveis e rotinas estavam em inglês. Refiz os comentários em português, mas mantive variáveis e rotinas com nomes em inglês, espero que isto não atrapalhe muito o entendimento.

A maior parte do código tem a ver com programação Windows. A tela do programa nada mais é que uma caixa de diálogo, com as chaves sendo desenhadas "na raça" (vide a rotina DrawKeys).

A decisão de permitir executar passo a passo complicou um pouco o programa. A rotina de ordenação é rodada em um thread separado do resto do programa. A cada passo a rotina de ordenação gera uma mensagem para avisar que concluiu o passo e aguarda a interface com o usuário (UI) sinalizar em um evento que a ordenação pode prosseguir. Isto foi aproveitado para segurar a execução (usando um timer do Windows), para dar um efeito visual melhor.

O conceito de passo não é muito rigoroso e varia bastante de um algorítmo para outro, portanto as velocidades de execução não são muito representativas.

As ordenações em si estão nas rotinas BubbleSort, ShellSort, HeapSort e QuickSort. Não foi feito esforço em otimizar o código; no caso do QuickSort é usado o elemento à esquerda como elemento de partição.

O projeto para o Microsoft VC 6, os fontes e o executável podem ser baixados daqui.

Na última parte vamos ver um programa de ordenação de arquivos, para execução por linha de comando sob Windows ou Linux. Isto é, supondo que eu ache tempo e consiga fazer. Até lá!

Nenhum comentário: