Allora ho scritto questo insertion sort per effettuare degli ordinamenti, sò che ci sono algoritmi più efficienti ma a me serviva questo. Questo algoritmo prende in ingresso un array di struutture di tipo
codice:
// DICHIARAZIONE STRUTTURA
struct s
{
int numero;
char *carattere;
};
int main
{
typedef struct s strutt;
// DICHIARO ARRAY DI STRUTTURE DI3 ELEM
// AFFETTO ASSEGNAZIONI
strutt array[3];
array[0].numero = 2;
array[0].carattere = "prova";
array[1].numero = 3;
array[1].carattere = "ciao";
array[2].numero = 1;
array[2].carattere = "casa";
// RICHIAMO ALGORITMO
insertion_sort(array, 3);
}
// IMPLEMENTAZIONE DELL'INSERTION S.
void insertion_sort(strutt *x, int length)
{
strutt key;
int i,j=1,scambi=0;
for(j=1;j<length;j++)
{
key = x[j];
i=j-1;
while(x[i].numero>key.numero && i>=0)
{
x[i+1] = x[i];
i--;
}
x[i+1] = key;
}
}
Così come sono ora l'algoritmo funziona. Se però al posto di ordinare il campo numerico della struttura voglio ordinare il puntatore a char non funziona.
Come posso modificare l'algoritmo per fargli ordinare anche in base ai caratteri?