Insertion sort in C

di il
2 risposte

Insertion sort in C

Sto cercando di fare questo programma seguendo questa traccia:
- leggo un valore
- analizzo il vettore a partire dal basso: se il valore che ho introdotto è
minore del dato del vettore che sto considerando, sposto quest’ultimo nella
cella successiva
- itero il procedimento tornando all’indietro, finché non trovo un dato
minore del valore introdotto (o sono arrivato in cima al vettore): il valore è
da inserire nella cella successiva.
Ho fatto questo:
#include <stdio.h>
#define N 3

int main()
{
  int v[N],i,j,k;

  for(i=0;i<N;i++)
  {
      printf("Inserisci un numero ");
      scanf("%d",&v[i]);
      for(j=i-1;j==0;j--)
      {
          if(v[i]<v[j])
          {
              k=v[j];
              v[j]=v[i];
              v[i]=k;
          }
          else if(v[i]>v[j])
          {
              break;
          }
      }
  }
  for(i=0;i<N;i++)
  {
   printf("%7d%13d\n",i,v[i]);
  }
    return 0;
}
Però mi funziona solo con i primi due numeri e poi niente.. non capisco perchè.. ho provato più volte a verificarlo anche facendomi schemi sul foglio ma non riesco a trovare dove sbaglio

2 Risposte

  • Re: Insertion sort in C

    Hai esaminato il caso in cui inserisci

    9 5 4

    ?

    Cosa succede?
  • Re: Insertion sort in C

    oregon ha scritto:


    Hai esaminato il caso in cui inserisci

    9 5 4

    ?

    Cosa succede?
    Mi stampa 5 9 4.. inverte solo le prime due
    Ah forse ho capito.. perchè mettendo a v v[j] poi ripeto il ciclo ma con v[j] e quindi mi scambia i valori che voglio controllare
Devi accedere o registrarti per scrivere nel forum
2 risposte