Insertion sort

di il
1 risposte

Insertion sort

Salve a tutti ho un problema con l'ordinamento insertion sort, il quale deve prendere l'elemento k+1-esimo e lo deve mettere nella sua posizione corretta rispetto ai primi k elementi
La funzione che dovrebbe far questo è la seguente ma non so perchè non funziona:

void insertion_sort(int a[],int dima)
{
int i=1;

while(i<dima)
{

for(int j=0;j<i;j++)

{
if(a<a[j])
{
swap(a,a[j]);
i++;
break;
}

}
i++;
}

}

Grazie anticipatamente a tutti dell'aiuto...

1 Risposte

  • Re: Insertion sort

    L'insertion sort è diverso dal tuo algoritmo
    
    void insertionSort(int v1[], int dim)
      {
       int i,j,v;
       
       for(i=1; i<=dim-1; i++)
       {
           v = v1[i];    //Conserva il valore da inserire
           j = i;
           
           while( j>0 && v1[j-1]>v )  //Finchè v1[j-1] contiene un valore superiore al valore che vogliamo inserire
           {                          //sposto "a destra" i valori
              v1[j] = v1[j-1];
              j--;
           }
           
           v1[j] = v;   //Assegna il valore conservato
        }
       
       }
    
    
    Edit: Preso da Wikipedia
Devi accedere o registrarti per scrivere nel forum
1 risposte