Salve studiando gli array ho trovato questo semplice programma per ordinare una lista di n numeri. Il programma in se è semplice ma non ho capito come lavora la funzione reorder che serve ad ordinare gli n elementi. Ecco il codice:
#include <stdio.h>
#define SIZE 100
void reorder (int n, int x[]);
main()
{
int i, n, x[SIZE];
while(n != EOF)
{
printf("Quanti numeri vuoi ordinare? ");
scanf("%d", &n);
for(i=0; i<n; ++i) /*Legge i numeri della lista*/
{
printf("\nNumero %d: ", i+1);
scanf("%d", &x[i]);
}
reorder(n, x); /*Chiama la funzione reorder mandando gli elementi n ed x (che rappresenta l'array)*/
printf("\nLista ordinata di numeri:\n\n");
for(i=0; i<n; ++i)
printf("Numero %d: %d\n\n", i+1, x[i]);
}
}
void reorder (int n, int x[])
{
int i, item, temp;
for(item=0; item < n-1; ++item)
for(i=item + 1; i<n; ++i)
if (x[i] < x[item])
{
temp = x[item];
x[item] = x[i];
x[i] = temp;
}
return;
}