Hmm, upon further inspection your algorithm is the following:
sub divide { my $mid = @_/2; $ITER++; return if @_ == 1; divide(@_[0 .. $mid - 1]); divide(@_[$mid .. $#_]); } for (10 .. 30) { $ITER = 0; divide(1 .. $_); printf "%2d %2d\n", $_, $ITER; }
The order of this is N, really. Specifically, it's 2*N-1. T(N) is the time it takes to call divide() for a list of N values:
T(1) = 1 T(2) = 1 + 2*T(1) T(4) = 1 + 2*T(2) ... T(N) = 1 + 2*T(N/2)
We can then expand backwards from the generality:
T(N) = 1 + 2*T(N/2) = 1 + 2*(1 + 2*T(N/4)) = 1 + 2 + 4*T(N/4) --> = 3 + 4*T(N/4) = 3 + 4*(1 + 2*T(N/8)) = 3 + 4 + 8*T(N/8) --> = 7 + 8*T(N/8) = 7 + 8*(1 + 2*T(N/16)) = 7 + 8 + 16*T(N/16) --> = 15 + 16*T(N/16)
The general equation here is T(N) = 2^k - 1 + 2^k * T(N / 2^k). We will make the following substitution: k = log(N) (base 2). We now have:
T(N) = 2^k - 1 + 2^k * T(N / 2^k) = 2^(log N) - 1 + 2^(log N) * T(N / 2^log(N)) = N - 1 + N * T(N/N) = N - 1 + N * 1 = 2*N - 1


$_="goto+F.print+chop;\n=yhpaj";F1:eval

In reply to RE: RE: Re: finding min and max of array recursivly by japhy
in thread finding min and max of array recursivly by mbond

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.