Skip to content

Instantly share code, notes, and snippets.

@KingScooty
Forked from martinogden/binary_search.js
Created November 10, 2011 16:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KingScooty/1355403 to your computer and use it in GitHub Desktop.
Save KingScooty/1355403 to your computer and use it in GitHub Desktop.
Binary Search Algorithm
/**
* @param {list} data List of integers sorted ascending
* @param {int} find Integer to search for
* @param {int} start Min array index
* @param {int} end Max array index
* @return {int} Index of 'find' or -1 if not found
*/
var binarySearch = function (data, find, start, end) {
var mid = start + (end - start) / 2;
if (start > end) {
return -1;
} else if (data[mid] == find) { // Found it
return mid;
} else if (data[mid] > find) { // mid is greater than find, search lower half
return binarySearch(data, find, start, mid - 1);
} else { // mid is less than find, search upper half
return binarySearch(data, find, mid + 1, end);
}
}
def binarySearch(data, find, start, end):
"""
Search for a integer in a list of integers using a simple `Binary Search` algorithm
:param list data: list of integers sorted ascending
:param int find: integer to search for
:param int start: min array index
:param int end: max array index
:return int: index of 'find' or -1 if not found
"""
mid = start + (end - start) / 2 # find mid point between start and end
if start > end:
return -1
elif data[mid] == find: # found it
return mid
elif data[mid] > find: # mid index is greater than find, search lower half
return binarySearch(data, find, start, mid - 1)
else: # mid index is less than find, search upper half
return binarySearch(data, find, mid + 1, end)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment