1. Algoritmos de ordenação
Em programação, muitas vezes, há a necessidade de ordenar dados. Se o nosso volume de
dados não for muito grande, não há problema se escolhermos um algoritmo de ordenação
eficaz ou não. Simplesmente quando o volume de dados é reduzido o tempo de execução de
um algoritmo de ordenação mais elementar é igual ou inferior ao tempo de execução de um
algoritmo mais avançado de ordenação.
Os algoritmos mais avançados executam mais instruções e utilização maior quantidade
estruturas de dados auxiliares. É com o aumento do volume dos dados, que a manipulação
destas estruturas de dados revela a sua utilidade e a sua contribuição para uma ordenação
mais rápida.
Para ordenar, o algoritmo só precisa de saber qual é a chave de ordenação, a partir dai ele
manipula os elementos a ordenar, considerando como elemento de comparação a chave que
lhe for dada. Por exemplo, podemos ordenar um conjunto de nomes por ordem alfabética
crescente ou decrescente. Podemos ordenar um conjunto de números por ordem crescem ou
decrescente. Podemos ordenar um conjunto de nomes por ordem crescente ou decrescente
do seu comprimento.
Vamos considerar a ordenação de vectores de inteiros
2. Selection Sort
O Selection Sort é considerado um algoritmo de ordenação simples, uma vezes que não usa
estruturas de dados auxiliares e é bastante intuitivo.
Funcionamento:
1) Pesquisa o elemento mais pequeno e troca do mesmo com o elemento da 1º posição
2) Pesquisa o elemento segundo elemento mais pequeno e troca com o elemento da
segunda posição.
Codigo (Selection Sort.jpg)
3. Insertion Sort
O insertion sort é considerado também um algoritmo de ordenação simples e a sua filosofia é
a seguite: Ir mantendo todos os elementos já considerados pelo algortimo ordenados entre si,
de tal maneira que quando o algoritmo chegar ao final dos dados, eles estaram todos
ordenados.Ou seja, se considerarmos um vector de inteiros, quando o algoritmo está no indice
“ i “ do vector, todos os elementos á esquerda desse indice estam ordenados entre si.
Codigo(Insertion Sort.jpg)
4. Bubble Sort
O bubble Sort é mais um algoritmo de ordenação simples. O seu funcionamento é baseado na
troca de elementos adjacentes que não estejam em ordem entre si.
Funcionamento:
1) O Bubble começa no final do vector, e vai trocando todos os elementos adjacentes
que não estejam em ordem entre si, até chegar à primeira posição do vector. No
final da 1º passagem o elemento mais pequeno já está na primeira posição do
vector.
2) O algoritmo vai de novo fazer trocas com elementos adjacentes, começando no
último elemento do vector, mas terminando agora ,na segunda posição do vector.
3) E assim por diante, começando sempre no ultimo elemento do vector e, acabando
uma posição á frente da posição em que tinha parado na passagem anterior.
4) O Bubble faz n-1 passagem pelos dados. Onde o n é o numero de elementos para
ordenar.
Código ( bubble Sort.jpg)
5. QuickSort
O QuickSort é um algoritmo avançado de ordenação, o seu inventor foi Charles Antony
Richard Hoare nos anos 60. É um algoritmo muito rápido e eficiente e por natureza
recursivo.
Funcionamento: É escolhido um pivô aleatoriamente e o algoritmo coloca o mesmo na sua
posição final. Depois o algoritmo parte os dados em dois, ficando-se com a parte dos
dados que está á direita e a parte dos dados que está esquerda da posição final do pivô.
Agora o quicksort vai fazer o mesmo a cada uma das duas partes (escolher o pivô, coloca-
lo na posição correcta e depois partir de novo os dados em dois). E assim sucessivamente
até se ficar com vectores com apenas um elemento. Nessa altura o vector inicial está
completamente ordenado.
No exemplo do quicksort vamos considerar que o elemento de partição é sempre o
ultimo elemento da partição em causa.