2014/01/12

O Som dos Algoritmos de Ordenação


Quando alguém se aventura nas artes de dominar a linguagem de programação de computadores, mais cedo ou mais tarde vai deparar-se com os algoritmos de ordenação. Embora muitas linguagens hoje ofereçam funções "já feitas" que tratam disso, não deixa de ser um exercício mental engraçado que irá fazer aquecer os neurónios... e neste caso, os ouvidos.

Existem inúmeros algoritmos diferentes de ordenação - e o mais engraçado é que se pensavam que por esta altura já estaria tudo inventado, continuam a surgir variantes que conseguem superar o desempenho de algoritmos anteriores (embora, cada vez mais, apenas em casos específicos).

Não é preciso saber programação para pensar nisso: se vos dessem 50 páginas de um livro, numeradas, mas fora de ordem, e vos pedissem para as ordenar, como fariam?

Quase seguramente que diferentes pessoas utilizariam diferentes métodos... Uns poderiam ir percorrendo o monte de folhas procurando pela primeira página e colocando-a numa pilha ao lado, depois procurando a segunda, e assim sucessivamente; outros poderiam ir desde logo trocando a ordem das páginas "mais à frente" com as que ficam "mais atrás"; etc. etc. E na verdade muitos dos algoritmos existentes replicam estes processos que seria feitos manualmente.


Existem inúmeros sites, programas e vídeos que demonstram o processo de cada método de ordenação usando diferentes modos de visualização, mas o que vos trago hoje é um que nos permite ouvir o som dos métodos de ordenação.

Se quiserem saber um pouco mais sobre eles, o site sorting algorithms mostra-nos alguns deles e como se comportam com diferentes conjuntos de dados (aleatórios, quase ordenados, pela ordem inversa, e com poucos valores diferentes). Como se poderá ver, não existem um único algoritmo "perfeito" para todas as situações. Há uns que são manifestamente mais rápidos de uma forma geral (quase sempre com complexidade acrescida face aos métodos "fáceis de entender"), mas há alguns que são particularmente eficientes para os diferentes casos dos dados a ordenar. Por isso, a escolha do método a usar irá depender do tipo de dados mais prováveis de encontrarem para cada caso.



Mas se preferirem outro tipo de sonoridade e visualização... também há quem se tenha dado ao trabalho de demonstrar estes algoritmos de ordenação usando danças populares! :)

2 comentários:

  1. Dois vídeos espectaculares.

    ResponderEliminar
  2. E pronto já vi uma data de danças populares e tive de ir à wikipedia

    http://en.wikipedia.org/wiki/Sorting_algorithm

    ResponderEliminar