mergesort - I made 'merge sort' algorithm by using MATLAB. But not O(N*log(N)) -
i made merge sort using matlab.
and tried bar - elements' # vs elapsed time.
but graph y=x. please me tt
my code following
function result = merge_sort2(input, p, r) global a; = input; if p < r q = floor((p+r)/2); merge_sort2(a, p, q); merge_sort2(a, q+1, r); merge2(p, q, r); end result = a; end function merge2(p, q, r) global a; n1 = q - p + 1; n2 = r - q; l = []; r = []; = 1 : n1 l(i) = a(p+i-1); end j = 1 : n2 r(j) = a(q+j); end l(n1+1) = inf; r(n2+1) = inf; = 1; j = 1; k = p : r if l(i) <= r(j) a(k) = l(i); = + 1; else a(k) = r(j); j = j + 1; end end end
and next code finding running time code.
function running_time2(func, incr, num) y = []; max = incr * num; = incr : incr : max data = i:-1:1; len = length(data); = tic; res = func(data, 1, len); elapsed = toc(a); y = [y elapsed]; fprintf('[the number of elements: %d]\t', i); fprintf('[elapsed time: %fs]\n', elapsed); end x = incr : incr: max; bar(x, y); end
i typed in command window in matlab.
running_time2(@merge_sort2, 10, 300)
Comments
Post a Comment