Ordenação por Seleção
De Wiki DAINF
(Diferença entre revisões)
(Nova página: A ser editado...) |
|||
Linha 1: | Linha 1: | ||
− | A | + | Um método simples de ordenação é o método da seleção direta ou selection sort. Esse método pega um vetor e procura o seu menor elemento, assim que o esse elemento é encontrado ele é permutado com o primeiro elemento. Depois ele procura o menor elemento no subvetor que começa com o segundo elemento do vetor e permuta com o segundo elemento. O método faz isso até que o subvetor tenha somente 1 elemento, nesse caso o vetor já está ordenado. |
+ | |||
+ | |||
+ | Código em C | ||
+ | |||
+ | #include<stdio.h> | ||
+ | |||
+ | void ordena (int n, int v[]); | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int n,i; | ||
+ | int vet[50]; | ||
+ | printf("digite o numero de elementos: "); | ||
+ | scanf("%d",&n); | ||
+ | for(i=0;i<n;i++){ | ||
+ | printf("v[%d]: ",i+1); | ||
+ | scanf("%d",&vet[i]); | ||
+ | } | ||
+ | ordena(n,vet); | ||
+ | printf("A ordem correta e:\n"); | ||
+ | |||
+ | for(i=0;i<n;i++){ | ||
+ | printf("%d\n",vet[i]); | ||
+ | } | ||
+ | system("pause"); | ||
+ | } | ||
+ | |||
+ | |||
+ | void ordena (int n, int v[]) | ||
+ | { | ||
+ | int i, j, min, x; | ||
+ | for (i = 0; i < n-1; ++i) { | ||
+ | min = i; | ||
+ | for (j = i+1; j < n; ++j) | ||
+ | if (v[j] < v[min]) min = j; | ||
+ | x = v[i]; v[i] = v[min]; v[min] = x; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | Referências: | ||
+ | * FEOFILOFF, Paulo. Projeto de Algoritmos. Disponível em: <http:// | ||
+ | www.ime.usp.br/~pf/algoritmos/index.html>. Acesso em: 28 nov. 2008 | ||
+ | * http://pucrs.campus2.br/~annes/alg3_ord_sel |
Edição de 15h38min de 2 de dezembro de 2008
Um método simples de ordenação é o método da seleção direta ou selection sort. Esse método pega um vetor e procura o seu menor elemento, assim que o esse elemento é encontrado ele é permutado com o primeiro elemento. Depois ele procura o menor elemento no subvetor que começa com o segundo elemento do vetor e permuta com o segundo elemento. O método faz isso até que o subvetor tenha somente 1 elemento, nesse caso o vetor já está ordenado.
Código em C
- include<stdio.h>
void ordena (int n, int v[]);
int main() {
int n,i; int vet[50]; printf("digite o numero de elementos: "); scanf("%d",&n); for(i=0;i<n;i++){ printf("v[%d]: ",i+1); scanf("%d",&vet[i]); } ordena(n,vet); printf("A ordem correta e:\n");
for(i=0;i<n;i++){ printf("%d\n",vet[i]); } system("pause");
}
void ordena (int n, int v[])
{
int i, j, min, x; for (i = 0; i < n-1; ++i) { min = i; for (j = i+1; j < n; ++j) if (v[j] < v[min]) min = j; x = v[i]; v[i] = v[min]; v[min] = x; }
}
Referências:
- FEOFILOFF, Paulo. Projeto de Algoritmos. Disponível em: <http://
www.ime.usp.br/~pf/algoritmos/index.html>. Acesso em: 28 nov. 2008