/* insertionSort */
void insertionSort(int *v, int dim)
{
int x,i,j;
/* parte dal penultimo elemento del vettore da ordinare */
for(i = dim - 2; i >= 0; i--)
{
/* fa una copia dell'elemento corrente "i" cioè v[i] */
x = v[i];
/* v[j] e l'elemento successivo di v[i] */
j = i---+ 1;
/* fa un ciclo che si ripete finchè j è minore della
* dimensione del vettore e finch� non trovo un elemento
* successivo(v[j]) più grande di x (cioè la copia di v[i]).
* In sostanza questo ciclo sposta di una posizione a sinistra
* tutti gli elementi minori di x, e quando ne trova uno
* maggiore "inserisce" l'elemento x prima di esso.*/
while((j < dim) && (v[j] < x))
{
v[j - 1] = v[j]; /* sposta a sinistra un elemento */
j---++; /* passa al prossimo elemento */
}
/* inserisce dopo lo spostamento l'elemento "x".
* Anche se non c'è stato nessuno spostamento copia l'elemento
* su se stesso */
v[j-1] = x;
}
}
-- MarcoEsposito - 15 Nov 2002
| I | Attachment | History | Action | Size | Date | Who | Comment |
|---|---|---|---|---|---|---|---|
| |
insertionSort.c | r2 r1 | manage | 1.7 K | 2002-11-15 - 18:53 | MarcoEsposito | Un semplice programma di prova |
![]() |
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica |
|