Mundo da ordenação

Este mundo fornece ferramentas para experimentar com algoritmos de ordenação. Pode ser usado de duas formas diferentes: a primeira é naturalmente para escrever os algoritmos de ordenação necessários. Mas também é possível simplesmente usar o modo de demonstração de cada exercício para observar o comportamento de algoritmos de ordenação. Isto ajuda a entender as diferenças entre cada um deles.

Métodos disponíveis para algoritmos de ordenação

MétodoAçãoCusto
[!java|c]int [/!]getValueCount() [!scala]:Int[/!] Retorna a quantidade de valores na arraynenhum
[!java]boolean [/!][!c]int [/!]éMenor([!java|c]int [/!]i[!scala]:Int[/!], [!java|c]int [/!]j[!scala]:Int[/!]) [!scala]:Boolean[/!] Retorna true se o conteúdo da célula i é estritamente menor que o da célula jduas leituras
[!java]boolean [/!][!c]int [/!]éMenorQue([!java|c]int [/!]i[!scala]:Int[/!], [!java|c]int [/!]value[!scala]:Int[/!])[!scala] :Boolean[/!] Retorna true se o conteúdo da célula i é estritamente menor que valoruma leitura
[!java|c]void [/!]alternar([!java|c]int [/!]i[!scala]:Int[/!], [!java|c]int [/!]j[!scala]:Int[/!]) Alterna ("swap") o conteúdo da célula i com o da célula jduas escritas, duas leituras
[!java|c]void [/!]copia([!java|c]int [/!]de[!scala]:Int[/!], [!java|c]int [/!]para[!scala]:Int[/!]) Copia o conteúdo da célula 'de' para a célula 'para'uma leitura, uuma escrita
[!java|c]int [/!]getValor([!java|c]int [/!]idx[!scala]:Int[/!]) Retorna o valor da célula idxuma leitura
[!java|c]void [/!]setValor([!java|c]int [/!]idx[!scala]:Int[/!], [!java|c]int [/!]valor[!scala]:Int[/!]) Coloca na célula 'idx' o valor uma escrita
[!java]boolean [/!][!c]int [/!]isSelected() [!scala]:Boolean[/!] Retorna true se o mundo atual está selecionado na interface gráfica.nenhum

Visão do histórico

É suficiente ordenar a array para resolver os exercícios. A sua solução deve seguir estritamente o comportamento esperado em cada exercício. Isto é reforçado a verificar que o seu algoritmo precisa da mesma quantidade de operações de leitura e escrita para ordenar a array. Quando estas quantidades não coincidem, compreender a diferença entre o seu código e a solução esperada pode se mostrar bem difícil.

Para ajudar neste processo, é possível explorar graficamente o histórico do algoritmo de ordenação. Alternar à visão Objetivo e usar o menu de contexto (clique com botão direito) para alternar da visão do estado atual à visão do histórico.

A visão do histórico é um pouco bagunçada à primeira vista, mas na verdade é bem simples: o tempo anda da esquerda para a direita neste gráfico e cada linha é uma célula da sua array. As linhas curvas que navegam entre linhas representam um certo valor de um dado. Quando duas linhas se cruzam, significa que dois valores foram alternados agora; uma bifurcação numa linha representa uma cópia de valor; quando um valor é magenta e seguido de uma interrogação (?), foi lido a usar getValue(); Se o valor é vermelho e seguido de uma exclamação (!), foi escrito com setValor().

Esta visão, inspirada por Aldo Cortesi, se mostra muito útil para entender o comportamento interno de algoritmos de ordenação.