codice:
#include <stdlib.h>
#include <stdio.h>
void insertion_sort(int *, int);
int main()
{
int i, n, *myArray;
printf("\nQuanti elementi vuoi inserire nell'array ?: ");
scanf("%d", &n);
myArray = (int *) malloc (n*sizeof(int));
for(i = 0; i < n; i++)
{
printf("Inserisci il %d elemento dell'array: ", i+1);
scanf("%d", &myArray[i]);
}
for(i = 0; i < n; i++)
printf("%d ", myArray[i]);
printf("\n\n");
insertion_sort(myArray, n);
for(i = 0; i < n; i++)
printf("%d ", myArray[i]);
getch();
free(myArray);
return 0;
}
void insertion_sort(int *array, int n)
{
int i, j, temp;
for(i = 1; i < n; i++)
{
temp = (array[i]);
j = i - 1;
while((j >= 0) && (temp < array[j]))
{
(array[j+1]) = (array[j]);
j--;
}
(array[j+1]) = temp;
}
}
*a cosa serve nr = 10?
*perchè allochi la memoria 2 volte?
*perchè fai iterare (con for) fino a 10 (nr) supponendo di avere un array composto da 3 elementi (n)?
p.s. l'algoritmo di ordinamento non l'ho controllato
ma così - il programma - dovrebbe fungere...