first commit: code for chapter 1

This commit is contained in:
Aditya Bhargava
2016-03-02 14:03:34 -08:00
commit f985d33eb6
2 changed files with 36 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
def binary_search(list, item):
# low and high keep track of which part of the list you'll search in.
low = 0
high = len(list) - 1
# While you haven't narrowed it down to one element ...
while low <= high:
# ... check the middle element
mid = (low + high) // 2
guess = list[mid]
# Found the item.
if guess == item:
return mid
# The guess was too high.
if guess > item:
high = mid - 1
# The guess was too low.
else:
low = mid + 1
# Item doesn't exist
return None
my_list = [1, 3, 5, 7, 9]
print binary_search(my_list, 3) # => 1
# 'None' means nil in Python. We use to indicate that the item wasn't found.
print binary_search(my_list, -1) # => None

8
README.md Normal file
View File

@@ -0,0 +1,8 @@
# Grokking Algorithms
This is the code in my book [Grokking Algorithms](https://www.manning.com/bhargava).
# Contributing
- The examples in this book are in Python, but I'd like to get examples in Ruby, Javascript, C, and other languages too. Please add examples in other languages!
- I'm pretty responsive to PRs. That is the quickest way to contribute to this repo.