Discussione:Bubble sort: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
|||
Riga 36:
C'era comunque un errore (a=elemN!) l'ho corretto e ho cambiato i cicli (per come erano non c'era l'effetto bolla), ho anche introdotto un'ottimizzazione che comunque è prevista nell'algoritmo originale (ma manca nella discussione).
Io elminerei anche i ''register'' in quanto è buona norma lasciar fare al compilatore[[Utente:Bermas66|bermas66]] 09:05, Lug 21, 2005 (CEST)<br/>
* Non saprei, la parola chiave ''register'' in effetti ''lascia'' fare al compilatore (il suo significato letterale potrebbe essere reso con: "questa variabile verrà usata molto frequentemente nelle prossime istruzioni, se possibile sarebbe utile mantenerla in un registro di CPU"... [[Utente:Moongateclimber|Moongateclimber]]<br/>
** Mi pare che così com'è il programma non funzioni. Credo sia fondamentale che i due cicli abbiano andamento opposto: una sale e l'altro scende. Consiglio di guardare [http://wikisource.org/wiki/bubble_sort qui]. bye [[Utente:DanGarb|DanGarb]] 10:49, Lug 21, 2005 (CEST)<br/>▼
***Non e' necessario che gli andamenti siano opposti; su molti libri l'algoritmo viene riportato con i 2 cicli in uguale direzione. Ogni ciclo interno posiziona nella cella definitiva ''almeno'' uno dei valori non ancora a posto. Purche' il ciclo esterno comporti N iterazioni (dimensione array), alla fine tutti gli elementi sono a posto. Il ciclo inverso rende semplicemente piu' semplice esprimere gli indici di partenza e di arrivo dei confronti.[[Utente:Moongateclimber|Moongateclimber]]<br/>▼
*** Il programma in C così com'è non funziona. Basta applicarlo al seguente array : [2,1] oppure a [3,2,1] . Un bug banale dipende dal fatto che l'elemento 0 non viene mai toccato. Anche correggendo questo piccolo bug però il programma non funzionerebbe comunque poichè il primo elemento verrebbe scambiato al più una sola volta. IMHO i due cicli devono essere opposti, anche se devo ammettere che sono anni che non leggo libri di informatica. bye [[Utente:DanGarb|DanGarb]] 11:31, Lug 21, 2005 (CEST)<br/>▼
****Sulla cella 0 avevi chiaramente ragione, sui cicli invertiti posso dirti... fidati! Spiego il bubblesort in corsi di C da anni, ce ne sono N varianti equivalenti da tutti i punti di vista. Vero che forse sarebbe piu' chiaro che tutti gli esempi di codice si rifacessero alla stessa versione (cosa che adesso non e'), e magari potrei aggiungere una sezione ''varianti e ottimizzazioni''... che ne dite?[[Utente:Moongateclimber|Moongateclimber]]▼
Prego, accomodati. se la pagina viene esageratamente lunga, si fa un articolo a parte, tipo [[Varienti del Bubblesort in C]], e si inserisce prima del codice la nota
:''Il codice riportato è a fini didattici. Per una descrizione completa e approfondita, mirata anche all'ottimizzazione, vedi l'articolo [[Varienti del Bubblesort in C]]''
▲** Mi pare che così com'è il programma non funzioni. Credo sia fondamentale che i due cicli abbiano andamento opposto: una sale e l'altro scende. Consiglio di guardare [http://wikisource.org/wiki/bubble_sort qui]. bye [[Utente:DanGarb|DanGarb]] 10:49, Lug 21, 2005 (CEST)
[[Utente:Blakwolf|<font color=black size +1>'''BW'''</font>]] [[Discussioni utente:Blakwolf|Insultami]] 12:05, Lug 21, 2005 (CEST)
▲***Non e' necessario che gli andamenti siano opposti; su molti libri l'algoritmo viene riportato con i 2 cicli in uguale direzione. Ogni ciclo interno posiziona nella cella definitiva ''almeno'' uno dei valori non ancora a posto. Purche' il ciclo esterno comporti N iterazioni (dimensione array), alla fine tutti gli elementi sono a posto. Il ciclo inverso rende semplicemente piu' semplice esprimere gli indici di partenza e di arrivo dei confronti.[[Utente:Moongateclimber|Moongateclimber]]
▲*** Il programma in C così com'è non funziona. Basta applicarlo al seguente array : [2,1] oppure a [3,2,1] . Un bug banale dipende dal fatto che l'elemento 0 non viene mai toccato. Anche correggendo questo piccolo bug però il programma non funzionerebbe comunque poichè il primo elemento verrebbe scambiato al più una sola volta. IMHO i due cicli devono essere opposti, anche se devo ammettere che sono anni che non leggo libri di informatica. bye [[Utente:DanGarb|DanGarb]] 11:31, Lug 21, 2005 (CEST)
▲****Sulla cella 0 avevi chiaramente ragione, sui cicli invertiti posso dirti... fidati! Spiego il bubblesort in corsi di C da anni, ce ne sono N varianti equivalenti da tutti i punti di vista. Vero che forse sarebbe piu' chiaro che tutti gli esempi di codice si rifacessero alla stessa versione (cosa che adesso non e'), e magari potrei aggiungere una sezione ''varianti e ottimizzazioni''... che ne dite?[[Utente:Moongateclimber|Moongateclimber]]
|