Subscribe:

terça-feira, 9 de setembro de 2014

Ordenação Gnome Sort em C

E aí pessoal, mais um exemplo de código hoje, o Gnome Sort. É um algoritmo simples até, onde ele faz a ordenação de números, bem legal para aumentar o conhecimento.
O funcionamento é o seguinte, primeiro digite todos os números que deseja ordenar, ele só vai parar de fazer as leituras quando for digitado algo que não seja número e será impresso todos os números de maneira ordenada.
Como em todos os outros códigos, antes de utilizarem, tentem entender o código. Abraço.



# include <stdio.h>
# include <stdlib.h>
# include <ctype.h>
# include <string.h>
# include <stdbool.h>
# define MAX 100001
 
int VectorSort[MAX];
int size = 0;
 
void swap(int * ,int *);
void GnomeSort();
 
int main (void)
{

printf("Entre com os valores: ");
 while(scanf("%d",&VectorSort[size]) >= 1)
 size++;
 
 GnomeSort();
 return 0;
}
 
void swap(int *A, int *B)
{
 int C = *A;
* A = *B;
* B = C;
}
 
void GnomeSort()
{
 int next = 0, previous = 0;
 int i = 0;
 
 for(i = 0; i < size ; i++)
 {
 if(VectorSort[i] > VectorSort[i + 1])
 {
  previous = i;
  next = i + 1;
  while(VectorSort[previous] > VectorSort[next])
  {
 swap(&VectorSort[previous],&VectorSort[next]);
 previous--;
 next--;
  }
 }
 }
 
 for(i = 0; i < size; i++)
 printf("%d\n",VectorSort[i]);
}

1 comentários :

Mário Douglas Alves Cabral disse...

Totalmente copiado do wikipedia

Postar um comentário