Selection Sort

O selection sort (do inglês, ordenação por seleção) é um algoritmo de ordenação baseado em se passar sempre o menor valor do vetor para a primeira posição (ou o maior dependendo da ordem requerida), depois o de segundo menor valor para a segunda posição, e assim é feito sucessivamente com os (n-1) elementos restantes, até os últimos dois elementos.

Começar. É Gratuito
ou inscrever-se com seu endereço de e-mail
Selection Sort por Mind Map: Selection Sort

1. O selection sort (do inglês, ordenação por seleção) é um algoritmo de ordenação baseado em se passar sempre o menor valor do vetor para a primeira posição (ou o maior dependendo da ordem requerida), depois o de segundo menor valor para a segunda posição, e assim é feito sucessivamente com os (n-1) elementos restantes, até os últimos dois elementos.

2. 1º Solucao VET[J] < VET[I] #include <iostream> using namespace std; void func(int vet[], int tam); int main() { int vet[] = {8,18,0,3}; func(vet, 4); for (int i = 0; i < 4 ; i++) { cout << vet[i]<<"\t"; } return 0; } void func(int vet[], int tam) { for (int i = 0; i < tam-1 ; i++) { for (int j = i+1; j <tam ; j++) { if (vet[j]< vet[i]) //O valor de J esta na segunda posicao { int temp = vet[j];/* * Como o J esta na segunda posicao, tem que guardar *na memoria porque ele vai ser substituido pelo * valor de I que eh o primeiro maior. */ vet[j]= vet[i]; /* * O J vai receber o valor de I que vai estar posicionado *na segunda posicao */ vet[i]= temp;/* * O valor de J que foi quardado em temp, que eh menor que I * vai para posicao da memoria de I, fazendo a troca */ } } } }

2.1. 2º SOLUCAO VET[J] > VET[I] #include <iostream> using namespace std; void func(int vet[], int tam); int main() { int vet[] = {8,4,6,9,2,3,1}; func(vet, 7); for (int i = 0; i < 7 ; i++) { cout << vet[i]<<"\t"; } return 0; } void func(int vet[], int tam) { for (int i = 0; i < tam-1 ; i++) { for (int j = i+1; j <tam ; j++) { int aux = vet[i]; if (vet[j]>vet[i]) { }else { int temp = vet[j]; vet[i]=vet[j]; vet[j] = aux; } } } }

2.2. Outro Exemplo de Selection sort com funcao #include <iostream> #include <stdlib.h> using namespace std; int valor; void selecao(int vet[], int valor); int main() { int vet[valor]; cout << "\nDigite a quantidade de Numeros para Ordenar: "; cin >> valor; cin.get(); for (int x = 0; x < valor; x++) { cout << "Digite o " << x + 1 << " valor aleatório: "; cin >> vet[x]; cin.get(); } cout << "Valores digitados:"; for (int j = 0; j < valor; j++) { cout << "\t\t" << vet[j]; } selecao(vet, valor); cout << "\nValores Ordenados: "; for (int d = 0; d < valor; d++) { cout << "\t\t" << vet[d]; } cout << "\n\n"; system("pause"); return 0; } void selecao(int vet[], int valor) { for (int i = 0; i < valor - 1; i++) { for (int k = i + 1; k < valor; k++) { if (vet[k] < vet[i]) { int temp = vet[i]; vet[i] = vet[k]; vet[k] = temp; } } } } C:\Users\Eduardo\.clion10\system\cmake\generated\661a6333\661a6333\Debug\untitled19.exe Digite a quantidade de Numeros para Ordenar: 3 Digite o 1 valor aleatório: 9 Digite o 2 valor aleatório: 5 Digite o 3 valor aleatório: 7 Valores digitados: 9 5 7 Valores Ordenados: 5 7 9 sh: pause: command not found Process finished with exit code 0

3. Vídeos

3.1. https://www.youtube.com/watch?v=f8hXR_Hvybo

3.1.1. https://www.youtube.com/watch?v=Ns4TPTC8whw

3.1.2. https://www.youtube.com/watch?v=jk3RQNgGRQE

4. Troca de Tipos Guardam a posição Utilizam variáveis temporárias para armazenar valores(aux, temp etc...)

4.1. Selection Sort de Numéricos e Char de um caracter

4.1.1. Imagem

4.2. Selection Sort de Vetor de Char

4.2.1. Imagem

4.2.1.1. Imagem

4.3. Selection Sort de Struct(Estruturas)

4.3.1. Imagem

4.4. Estrutura completa do Selection sort. For(int x = 0; x < tam-1;x++)

4.4.1. Imagem

5. #include <iostream> #include <stdlib.h> using namespace std; int main() { int i, j, min, temp, tam = 4, vet[] = {8,2,4,9}; int Y=0; int W=0; int P=0; for (i = 0; i < tam - 1; i++) { W++; min = i; for (j = i+1 ; j < tam; j++) { if (vet[min] > vet[j]) { int aux = j; temp = vet[aux]; vet[aux] = vet[min]; vet[min] = temp; P++; } Y++; } } for(int exibe = 0; exibe < tam ; exibe++) { cout<<vet[exibe]<<"\t"; } cout << "\n\n"<<P<<"\t"<<Y<<"\t"<<W; system("pause"); return 0; } /* 9 3 1 2 8 1° For em vet[0]=9; 2° For em vet[j=j+1] =3; Neste segundo FOR teste o 1º vet[0] > j = 0+1 vet[j=i+1] Testa 9 com 3, como 9 eh > 3 troca. 3 9 1 2 8 TRAVADO no 1° For agora com a troca vet[0]=3; Neste segundo FOR teste o 1º vet[0] > e o incremento o i de 1, j=1+1 vet[j=i+1] Testa 3 com 1, como 3 eh > 1 troca. 1 9 3 2 8 TRAVADO no 1° For agora com a troca vet[0]=1; Neste segundo FOR teste o 1º vet[0] > e o incremento o i de 2, j=2+1 vet[j=i+1] Testa 1 com 2, como 1 eh < 2 NÃO troca. 1 9 3 2 8 TRAVADO no 1° For agora com a troca vet[0]=1; Neste segundo FOR teste o 1º vet[0] > e o incremento o i de 3, j=3+1 vet[j=i+1] Testa 1 com 8, como 1 eh < 8 NÃO troca. 1 9 3 2 8 ACABOU O INCREMENTO DO FOR INTERNO 1 9 3 2 8 1° For em vet[1]=9; 2° For em vet[j=j+1] =3; Neste segundo FOR teste o 1º vet[0] > j = 0+1 vet[j=i+1] Testa 9 com 3, como 9 eh > 3 troca. 1 3 9 2 8 TRAVADO no 1° For agora com a troca vet[1]=3; Neste segundo FOR teste o 1º vet[0] > e o incremento o i de 1, j=1+1 vet[j=i+1] Testa 3 com 9, como 3 eh > 9 NAO troca. 1 3 9 2 8 TRAVADO no 1° For agora com a troca vet[1]=1; Neste segundo FOR teste o 1º vet[0] > e o incremento o i de 2, j=2+1 vet[j=i+1] Testa 3 com 2, como 3 eh > 2 troca. 1 2 9 3 8 TRAVADO no 1° For agora com a troca vet[1]=2; Neste segundo FOR teste o 1º vet[0] > e o incremento o i de 3, j=3+1 vet[j=i+1] Testa 2 com 8, como 2 eh > 8 NÃO troca. 1 2 9 3 8 ACABOU O INCREMENTO DO FOR INTERNO 1 2 9 3 8 1° For em vet[2]=9; 2° For em vet[j=j+1] =3; Neste segundo FOR teste o 1º vet[0] > j = 0+1 vet[j=i+1] Testa 9 com 3, como 9 eh > 3 troca. 1 2 3 9 8 TRAVADO no 1° For agora com a troca vet[2]=3; Neste segundo FOR teste o 1º vet[0] > e o incremento o i de 1, j=1+1 vet[j=i+1] Testa 3 com 9, como 3 eh > 9 NAO troca. 1 2 3 9 8 TRAVADO no 1° For agora com a troca vet[2]=3; Neste segundo FOR teste o 1º vet[0] > e o incremento o i de 2, j=2+1 vet[j=i+1] Testa 3 com 2, como 3 eh > 2 troca. 1 2 3 9 8 TRAVADO no 1° For agora com a troca vet[2]=3; Neste segundo FOR teste o 1º vet[0] > e o incremento o i de 3, j=3+1 vet[j=i+1] Testa 3 com 8, como 3 eh > 8 NÃO troca. 1 2 3 9 8 ACABOU O INCREMENTO DO FOR INTERNO 1 2 3 9 8 1° For em vet[3]=9; 2° For em vet[j=j+1] =8; Neste segundo FOR teste o 1º vet[3] > j = 3+1 vet[j=i+1] Testa 9 com 8, como 9 eh > 8 troca. 1 2 3 8 9 ACABOU O INCREMENTO DO FOR INTERNO */