Pages: [1]   Go Down
Print
Author Topic: BinaryChange(A,?,?)  (Read 1508 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
aryanna
Apprendista Forumista
**
Offline Offline

Posts: 110



« on: 09-06-2010, 00:08:31 »

Allora ragazzi, ho provato ma niente..mi confondo già alla seconda chiamata ricorsiva. L'algoritmo è questo:
BinaryChange(A, a, b)
1. if (a==b) then return;
2. c = floor ((a+b)/2);
3. scambia A[a] con A[c];
4. scambia A[c+1] con A[b ];
5. BinaryChange(A, a, c);
6. BinaryChange(A, c+1, b);

Descrivere il corretto output ritornato dall'algoritmo se eseguito sui parametri (A, 1, 12), dove A corrisponde al seguente array:
[2, 3, 7, 10, 7, 6, 7, 4, 1, 2, 7, 5]

Innanzitutto parto da a=1, b=12 quindi c=6
scambio A[1] con A[3] ==> [2, 10, 7, 3, 7, 6, 7, 4, 1, 2, 7, 5]
scambio A[4] con A[12]  come si effettua questo scambio se A[12] non esiste???
meglio k mi fermo qui perché così penso k l'algoritmo già non va...
« Last Edit: 09-06-2010, 16:00:15 by aryanna » Logged

Rappresentante studenti Corso di Laurea in Informatica - arianna317@gmail.com

write once, run everywhere..
kry84
Apprendista Forumista
**
Offline Offline

Posts: 154



« Reply #1 on: 09-06-2010, 07:01:51 »

Le locazioni dell'array, in tutti questi esercizi, partono da 1 invece che da 0. Se fai così, tornano tutti i conti.
 
Logged
peppe89ct
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 288


very normal people


« Reply #2 on: 09-06-2010, 12:50:13 »

Le locazioni dell'array, in tutti questi esercizi, partono da 1 invece che da 0. Se fai così, tornano tutti i conti.
 

Logged

"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec"
cock86
Forumista Eroico
*****
Offline Offline

Posts: 2.014


OM


« Reply #3 on: 09-06-2010, 14:09:15 »

@Aryanna un piccolo consiglio... quando scrivi il codice usa code perchè se no gli indici i di fanno scrivere tutto in corsivo, e quelli b tutto in bold. Come ti è successo.
Comunque è vero parte da uno l'array e poi c nello scambio e sei non tre. devi scambiare A[1] con A[6] e A[7] con A[12]. E poi riprocedi ricorsivamente. Insomma scambi gli estremi dei sottoarray dividendo ogni volta l'array in due.
Logged

Un "buon informatico" trova una soluzione ad ogni tipo di problema. Un "ottimo informatico" trova la soluzione più efficiente ad ogni tipo di problema! Non stancatevi di migliorare la vostra soluzione!
aryanna
Apprendista Forumista
**
Offline Offline

Posts: 110



« Reply #4 on: 16-06-2010, 09:41:43 »

Ok sorry sistemato il post Wink e capito anche l'esercizio, grazie  ciao
Logged

Rappresentante studenti Corso di Laurea in Informatica - arianna317@gmail.com

write once, run everywhere..
dani89
Apprendista Forumista
**
Offline Offline

Posts: 254



« Reply #5 on: 23-06-2010, 17:45:54 »

io invece ancora ho dubbi, qualcuno che lo sappia fare lo può spiegare cortesemente?
Logged
aryanna
Apprendista Forumista
**
Offline Offline

Posts: 110



« Reply #6 on: 25-06-2010, 08:43:42 »

Allora il BinaryChange devi pensarlo così.. prima divide l'array e poi scambia le estremità di ogni sotto array. ovviamente considera gli indici non a a partire da 0 ma da 1, vedi se riesci così..
Logged

Rappresentante studenti Corso di Laurea in Informatica - arianna317@gmail.com

write once, run everywhere..
dani89
Apprendista Forumista
**
Offline Offline

Posts: 254



« Reply #7 on: 25-06-2010, 11:23:10 »

ora è tutto chiaro grazie!
Logged
AngyFio
Matricola
*
Offline Offline

Posts: 29


« Reply #8 on: 26-06-2010, 17:29:22 »

Ho rifatto per 3 volte questo esercizio:
Code:
Si consideri il seguente algoritmo ricorsivo BinaryChange:
BinaryChange(A, a, b)
1. if (a==b) then return;
2. c = floor ((a+b)/2);
3. scambia A[a] con A[c];
4. scambia A[c+1] con A[b];
5. BinaryChange(A, a, c);
6. BinaryChange(A, c+1, b);

Descrivere il corretto output ritornato dall'algoritmo se eseguito sui parametri (A, 1, 11), dove A corrisponde al seguente array:
[9, 1, 9, 6, 4, 2, 1, 10, 3, 7, 2]

Il mio output è questo: 1 - 9 - 2 - 4 - 9 - 6 - 10 - 3 - 1 - 7 - 2
Mentre l'output del sistema è questo: 1 - 9 - 2 - 4 - 9 - 6 - 10 - 3 - 2 - 1 - 7

Sbaglio io o è un possibile bug?? boh


EDIT: Ho risolto... errore  mio    testate
« Last Edit: 26-06-2010, 17:35:54 by AngyFio » Logged
Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #9 on: 26-06-2010, 17:34:21 »

A me risulta come l'output del sistema, mi sa che sbagli qualcosa tu =)

Forse ho anche capitodove sbagli. Quando all'inizio dividi l'array in 2 parti non scambi gli elementi della parte di destra, cioè il 2 con l'1. Così facendo esce il tuo output. Invece scambiandolo (come è corretto fare) ti risulta l'output del sistema d'esercitazione. Spero d'aver spiegato tutto chiaramente
« Last Edit: 26-06-2010, 17:36:45 by Manna » Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
AngyFio
Matricola
*
Offline Offline

Posts: 29


« Reply #10 on: 26-06-2010, 17:36:28 »

A me risulta come l'output del sistema, mi sa che sbagli qualcosa tu =)

Si me ne sono accorto... 
Grazie 
Logged
Pages: [1]   Go Up
Print
Jump to: