|
1 # Uses a binary search algorithm to locate a value in the specified array. |
|
2 window.binary_search = (items, value) -> |
|
3 |
|
4 start = 0 |
|
5 stop = items.length - 1 |
|
6 pivot = Math.floor (start + stop) / 2 |
|
7 |
|
8 while items[pivot] isnt value and start < stop |
|
9 |
|
10 # Adjust the search area. |
|
11 stop = pivot - 1 if value < items[pivot] |
|
12 start = pivot + 1 if value > items[pivot] |
|
13 |
|
14 # Recalculate the pivot. |
|
15 pivot = Math.floor (stop + start) / 2 |
|
16 |
|
17 # Make sure we've found the correct value. |
|
18 if items[pivot] is value then pivot else -1 |