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]);
}