def binary_search(i, vals): #Returns the index of i in vals, or -1 if does not appear return divide(i, vals, 0, len(vals) - 1) def divide(i, vals, lower, upper): # Helper to binary_search; divides-and-conquers. midpt = (int) ((upper - lower) / 2) + lower if vals[midpt] == i: return midpt if lower == upper: return -1 if vals[midpt] > i: return divide(i, vals, lower, midpt) return divide(i, vals, midpt + 1, upper)