Com o Selection Sort percorremos o vetor e guardamos sempre o menor valor. Chegando ao fim do vetor teremos então a primeira posição. A partir da próxima iteração o primeiro vetor já não precisa mais ser verificado pois ele já está ordenado.
Observaremos que o método Selection Sort terá a mesma quantidade de iterações que o método Bubble Sort. Para descobrir nesse caso a quantidade de iterações podemos fazer a seguinte fórmula para um vetor de 10 posições:
(n-1)+(n-2)+(n-3)+(n-4)+(n-5)+(n-6)+(n-8)+(n-8)
Sendo n o tamanho do vetor, temos o resultado: (9)+(8)+(7)+(6)+(5)+(4)+(3)+(2) = 44 iterações.
Apesar de os 2 terem a mesma quantidade de iterações, no método Selection Sort temos uma leve vantagem quando comparamos a quantidade de trocas. No método Selection Sort armazenamos o menor valor e somente ao final da primeira passada completa pelo vetor que fazemos a troca.
#define TAM 10
void selection_sort(int v[])
{
int i, j, aux, menor;
for(i = 0; i < TAM; i++)
{
menor = i;
for(j = i+1; j < TAM; j++)
{
if(v[j] < v[menor])
menor = j;
}
if(i != menor)
{
aux = v[i];
v[i] = v[menor];
v[menor] = aux;
}
}
}
main()
{
int i, vet[TAM] = {10,9,3,6,7,5,1,8,4,2};
printf("Vetor atual: ");
for(i = 0; i < TAM; i++)
printf("%d ", vet[i]);
printf("\n");
system("pause");
selection_sort(vet);
printf("\n\nVetor ordenado: ");
for(i = 0; i < TAM; i++)
printf("%d ", vet[i]);
printf("\n");
system("pause");
return 0;
}
Nesse código criei a função que ordena com o método Selection Sort. Podemos assim mandar o vetor como argumento para ser ordenado por nossa função. Para facilitar a visualização do que ocorreu na função eu criei um vetor com valores de 1 a 10 embaralhados e mandei imprimir esses números antes de serem ordenados e depois de serem ordenados.
O algoritmo do selection sort pode ser desenvolvido usando outras lógicas que no final terão o mesmo resultado.
Tanto o método Selection Sort quanto o método Bubble Sort não apresentam boa eficiência para ordenação de grandes vetores. Porém, é importante estuda-los para melhor entender os outros métodos de ordenação que foram basicamente melhoras desses métodos com menor eficiência.
Nenhum comentário:
Postar um comentário