#!/usr/bin/env python
def search(l, i, func):
lo = 0
hi = len(l) - 1
mid = (lo + hi) / 2
return func(l, i, lo, mid, hi)
def recursive_binary_search(l, i, lo, mid, hi):
if lo > mid or hi < mid: return -1
if l[mid] > i:
hi = mid - 1
mid = (lo + hi) / 2
return recursive_binary_search(l, i, lo, mid, hi)
elif l[mid] == i:
return mid
elif l[mid] < i:
lo = mid + 1
mid = (lo + hi) / 2
return recursive_binary_search(l, i, lo, mid, hi)
def iterative_binary_search(l, i, lo, mid, hi):
while lo <= mid and hi >= mid:
if l[mid] > i:
hi = mid - 1
mid = (lo + hi) / 2
elif l[mid] == i:
return mid
elif l[mid] < i:
lo = mid + 1
mid = (lo + hi) / 2
return -1
if __name__ == "__main__":
l = [x for x in xrange(0, 10)]
print "Using recursive binary search"
print "Input:", l
for i in xrange(0, len(l)):
index = search(l, i, recursive_binary_search)
print "Searching for", i, ", got index", index
assert i == index
i = 10
index = search(l, i, recursive_binary_search)
print "Searching for", i, ", got index", index
print
print "Using iterative binary search"
print "Input:", l
for i in xrange(0, len(l)):
index = search(l, i, iterative_binary_search)
print "Searching for", i, ", got index", index
assert i == index
i = 10
index = search(l, i, iterative_binary_search)
print "Searching for", i, ", got index", index
Thursday, May 17, 2012
How to Implement Binary Search in Python
My simple implementations of binary search algorithms (iterative and recursive) in Python.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment