Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
michael@0 | 1 | # Uses a binary search algorithm to locate a value in the specified array. |
michael@0 | 2 | window.binary_search = (items, value) -> |
michael@0 | 3 | |
michael@0 | 4 | start = 0 |
michael@0 | 5 | stop = items.length - 1 |
michael@0 | 6 | pivot = Math.floor (start + stop) / 2 |
michael@0 | 7 | |
michael@0 | 8 | while items[pivot] isnt value and start < stop |
michael@0 | 9 | |
michael@0 | 10 | # Adjust the search area. |
michael@0 | 11 | stop = pivot - 1 if value < items[pivot] |
michael@0 | 12 | start = pivot + 1 if value > items[pivot] |
michael@0 | 13 | |
michael@0 | 14 | # Recalculate the pivot. |
michael@0 | 15 | pivot = Math.floor (stop + start) / 2 |
michael@0 | 16 | |
michael@0 | 17 | # Make sure we've found the correct value. |
michael@0 | 18 | if items[pivot] is value then pivot else -1 |