PDA

Visualizza la versione completa : [C] Funzione di ordinamento Bubble Sort


Pumpi
23-05-2012, 18:39
Salve a tutti! devo creare una funziona che mi ordini i numeri all'interno di un vettore in maniera crescente, ho utilizzato l'algoritmo "bubble sort", ma temo che mi manca un passaggio perchè non riesco ad ordinarlo bene, esempio:
se ho i numeri 15 35 92 21 27 26 26, me li riscrive come 15 21 21 21 26 26 26 e non li ordina, quindi penso che il problema sia nello scambiare il valore delle signole celle, il seguente è il codice che ho scritto:



void sort_dyn_array(dyn_array *da){
int i,j;
for(i = 0; i < da -> next_index; i++)
for(j = da -> next_index; j > i+1; j--)
if(da->V[j-1]<da->V[j])
da -> V[j]=da -> V[j-1]; // V[j] e V[j-1] devono scambiarsi,
//quindi devo dirgli che da->V[j] devo metterlo al posto di da->V[j-1]
//e viceversa, ma se lo scrivo così e basta finisce per ripetermi un
//numero, per esempio 15 21 21 21 26 26 26
}

ale392
23-05-2012, 18:44
scusa per l' OT ma come faccio a mettere quel riquadro per il codice?? :confused:

Scara95
23-05-2012, 18:51
da -> V[j]=da -> V[j-1];

È sbagliato inquanto copia solo il secondo nel primo, per scambiarli devi avere un'altra variabili:


int xchange;
xchange = V[i];
V[i] = V[i - 1];
V[i - 1] = xchange;

alka
23-05-2012, 18:52
Originariamente inviato da ale392
scusa per l' OT ma come faccio a mettere quel riquadro per il codice?? :confused:

C'è scritto nel Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887), che dovresti leggere; inoltre, per chiarimenti si scrive in privato ai moderatori, senza intervenire a gamba tesa nelle discussioni altrui dove altri, come te, hanno diritto a gestire le risposte ai propri problemi, e non i tuoi dubbi sull'utilizzo del forum. :madai!?:

Scara95
23-05-2012, 18:53
Originariamente inviato da ale392
scusa per l' OT ma come faccio a mettere quel riquadro per il codice?? :confused:

Schiacci il tasto code in alto e incolli il codice sulla finestrella che appare, oppure aggiungi un (CODE) prima e un (/CODE) dopo con le [] al posto delle ()...

Pumpi
23-05-2012, 19:35
Ma visto che si tratta di puntatori dovrò scrivere


xchange= da->V[j];
da->V[j]=da->V[j-1];
da->V[j-1]=xchange;


perchè mi interessa copiare l'indirizzo di memoria, giusto?

Scara95
23-05-2012, 19:43
Quello era ovvio, il mio codice era solo un prototipo esplicativo...

Pumpi
24-05-2012, 01:21
cavolo!il programma non va comunque..non capisco proprio perché!eppure ho scritto tutto nel modo corretto, non da nessun errore, ma continua a non ordinarli!

Who am I
24-05-2012, 01:45
Chissà cos'è questo dyn_array.

Scara95
24-05-2012, 06:44
Originariamente inviato da Who am I
Chissà cos'è questo dyn_array.
Suppongo una struttura che implementa un'array dinamico...

Loading