Ordenação por Seleção

De Wiki DAINF
(Diferença entre revisões)
(Nova página: A ser editado...)
 
Linha 1: Linha 1:
A ser editado...
+
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

  1. 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

Ferramentas pessoais