First of all note that your recopying array slices makes this algorithm take as much or more work than just walking the whole array (which doesn't need to assume sorted first). If you want a binary search to be efficient, it is much better to pass an array reference and 2 indexes.
Secondly any time you hear the word "search", you should think to yourself, "hash lookup". Building a hash takes the same amount of work as scanning the array a fairly small number of times, and is a simple one-liner to code. Even when it isn't the most efficient approach, it is generally only off by a constant factor from the best, and doing better takes a lot of work. Become friends with the hash. Using it takes less work, is more efficient, and is more reliable.
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: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.