yuesefa
9/13/2006 10:11:00 AM
here is the merge_sort i write in ruby. but it doesn't produce the
right answer, i can't find where the problem is . thanks in advance
def merge(a, p, q, r)
a1=a[0..(q-p)]
a2=a[(q-p+1)..r]
a1<<99999999
a2<<99999999
i=j=0
for k in (p..r)
if a1[i]<=a2[j]
a[k]=a1[i]
i=i+1
else
a[k]=a2[j]
j=j+1
end
end
end
def merge_sort(a,p,r)
if p<r
q =(p+r)/2
merge_sort(a,p,q)
merge_sort(a,q+1,r)
merge(a,p,q,r)
end
end
a=[]
10.times {a<<rand(10)}
p a
merge_sort(a,0,9)
p a