|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2010
Messaggi: 85
|
merge sort e ricorsione
Salve a tutti,
spero di aver postato nella giusta sezione. Ho un porblema con la ricorsione in genere ed il mergesort in particolare, sul concetto generale ci sono, ho capito che l'algoritmo divide l'array fino al singolo elemento ma non capisco come fa poi il merge, perchè mi perdo tra le chiamate ricorsive; stò usando il seguente pseudocodice: Codice:
merge (a[], left, center, right)
i ← left
j ← center + 1
k ← 0
while ((i <= center) && (j <= right)) do
if (a[i] <= a[j])
then
b[k] ← a[i]
i ← i + 1
else
b[k] ← a[j]
j ← j + 1
k ← k + 1
end while
while (i <= center) do
b[k] ← a[i]
i ← i + 1
k ← k + 1
end while
while (j <= right) do
b[k] ← a[j]
j ← j + 1
k ← k + 1
end while
for k ← left to right do
a[k] ← b[k - left]
mergesort (a[], left, right)
if (left < right) then
center ← (left + right) / 2
mergesort(a, left, center)
mergesort(a, center+1, right)
merge(a, left, center, right)
grazie per la disponibilità buona serata |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Nov 2011
Messaggi: 13
|
Merge viene chiamato post-order quando si esplora l'albero: figli prima del padre.
Al primo Merge vengono passati sempre degli Array si dimensione 0 o 1, che sono i casi base del merge sort e che sono già ordinati.
__________________
http://sic-oding.blogspot.com/ |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:06.



















