Algoritmos de ordenação é uma área com extenso material. Independente da linguagem, saber a melhor forma de ordenar um vetor traz bons ganhos de performance de seu código.
Alguns algoritmos, como o bubble sort, são simples e intuitivos. Estes boa parte dos programadores conhece, mas sua performance está entre as piores, por exigir muitas iterações. Outros, como o Quick sort, são mais complexos, menos intuitivos, mas produzem bons resultados, tendo ganho significativo na performance do código.
Vamos ver alguns algoritmos:
Bubble Sort:
O mais simples e intuitivo dos algoritmos. A idéia é percorrer o array várias vezes, comparando sempre um termo com o próximo, e trocando-os de lugar no vetor caso o primeiro seja maior que o segundo. A performance deste algoritmo é ruim, sendo sua compexidade da ordem de O(n²).
Exemplo de código:
int bubble(vetor vet)
{
int i, j, aux_troca, num_ops;
num_ops=0;
for(i=0;i<tam-1;i++)
{
for(j=0;j<tam-1-i;j++)
{
if(vet[j]>vet[j+1])
{
aux_troca = vet[j];
vet[j] = vet[j+1];
vet[j+1] = aux_troca;
}
num_ops++;
}
}
return(num_ops);
}
Até o próximo post!
Links
http://linux.wku.edu/~lamonml/algor/sort/sort.html
http://www.geocities.com/SiliconValley/Network/1854/Sort1.html