Shaker sort

di il
8 risposte

Shaker sort

Ciao ragazzi:)Sono nuovo in questo campo e volevo farvi una domanda:"Per sviluppare uno shaker sort come si fa a far ripetere i cicli di for tante volte quante bastano per ordinare l'array?Si deve usare un while?

8 Risposte

  • Re: Shaker sort

    Ciao,grazie per la risposta.Nell'esempio che mi hai postato non capisco a cosa servano i boolean e cosa significhi alla fine "if(!swapped) break.
  • Re: Shaker sort

    merecol ha scritto:


    non capisco cosa significhi alla fine "if(!swapped) break.
    if(!swapped) break; //block (break if no element was swapped - the array is sorted)
    Il commento è molto esplicativo: se non è stato eseguito nessuno swap significa che l'array è ordinato, e dunque non è necessario continuare con la prossima iterazione: la chiamata break serve ad uscire dal blocco di codice in cui ci si trova, in questo caso il for più esterno.
  • Re: Shaker sort

    Quanto al boolean, è semplicemente un flag di un bit. Se non lo conosci immagino che tu venga dal c (versione precedente alla 99); in tal caso puoi sostituirlo con un int.
  • Re: Shaker sort

    Sì, ho capito la funzione dell'if ma nel codice vero dentro le parentesi cosa viene messo?Cosa si fa per far capire che non è stato fatto nessun cambio?Grazie mille per la disponibilita:):):)
  • Re: Shaker sort

    merecol ha scritto:


    Cosa si fa per far capire che non è stato fatto nessun cambio?
    All'inizio di ogni iterazione, la variabile swapped è impostata a false. Se viene eseguito uno swap, allora swapped è impostata a true. Di conseguenza, basta controllare il valore di swapped per capire se l'array è stato modificato nell'ultima iterazione oppure no.
  • Re: Shaker sort

    merecol ha scritto:


    Sì, ho capito la funzione dell'if ma nel codice vero dentro le parentesi cosa viene messo?Cosa si fa per far capire che non è stato fatto nessun cambio?Grazie mille per la disponibilita:):):)
    Quello dell'esempio è il codice vero, solo che è scritto in java anziché in c. In c devi sostituire i false con 0, i true con 1 e boolean con int.
  • Re: Shaker sort

    Scusami hai ragione mi sono confuso:):):)Comunque non riesco a capire il concetto del valore swapped per capire se l'array è ordinato...
  • Re: Shaker sort

    Se all'iterazione corrente non effettui nessuno scambio, non ne effettuerai nessuno neanche alle iterazioni successive, dato che sono tutte uguali e operano sempre sugli stessi dati. Perciò è inutile proseguire. Il vettore è già ordinato.
Devi accedere o registrarti per scrivere nel forum
8 risposte