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