Buongiorno a tutti voi ! . Mi sto preparando per l'esame di C , ed ho provato ad implementare il selection sort. Penso che faccia il suo dovere,viene selezionato l'elemento minimo dell'array e viene portato in 1a posizione,questa stessa operazione viene eseguita sui restanti elementi, fino a che l'array non risulta totalmente ordinato. Il il ciclo for più esterno imposta come valore minimo l'elemento nella 1a posizione(per i=0) mentre lo scambio degli elementi avviene solo a conclusione del ciclo for più interno, all'interno di esso l'elemento supposto minimo viene confrontato con i vari elementi dell'array e viene effettuato uno scambio ogni qual volta viene trovato un elemento più piccolo, in questo modo alla fine della sua esecuzione, l'elemento minimo dell'array verrà assegnato alla 1a posizione.Il procedimento è analogo per i restanti elementi dell'array, fino a che l'array non risulterà ordinato.Riguardo il tempo di esecuzione so che è n^2 , ma cosa posso aggiungere? Basta dire che l'ordinamento è quadratico perché effettuo n-1 confronti?
#include <stdio.h>
#include <stdlib.h>
#define N 10
void sel_sort(int * A , int n);
int main()
{
int n,c,i;
int *A;
printf("Inserisci il numero di elementi che vuoi inserire nel vettore \n");
scanf("%d",&n);
if(!(A= (float *)malloc(n*sizeof(float))))
abort();
printf("Inserisci gli n elementi che vuoi caricare all'interno del vettore : \n");
for(i=0;i<n;i++){
printf("Inserire il %d elemento ",c=i+1);
scanf("%d", &A[i]);
}
sel_sort(A,n);
printf("\nL'array A è ora ordinato come segue:\n");
for (i=0; i<n; i++)
printf("%d\n", A[i]);
}