Implementazione selection sort in c (tempo di esecuzione?)

di il
3 risposte

Implementazione selection sort in c (tempo di esecuzione?)

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]);

}

   

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte