Skip to content

Instantly share code, notes, and snippets.

@Rafe
Created April 23, 2013 04:44
Show Gist options
  • Save Rafe/5440912 to your computer and use it in GitHub Desktop.
Save Rafe/5440912 to your computer and use it in GitHub Desktop.
Solving binary search problem from http://code-warrior.herokuapp.com.

Binary Search

Implement a Binary search function which return the search path

Hint

Using Math.floor for calculating index to get the right path

Extra

Try to implement in recursion / iteration

##Powered by CodeWarrior

module.exports = function(array, value) {
var left = 0;
var right = array.length - 1;
var tracker = [];
while (left <= right) {
var mid = Math.floor((left + right) / 2);
tracker.push(array[mid]);
if (array[mid] == value) return tracker ;
if (array[mid] < value) {
left = mid + 1;
} else {
right = mid - 1;
};
}
return tracker;
}
{
"id": 1,
"name": "binary search",
"level": "basic",
"author": "Jimmy Chao"
}
var expect = require('expect.js');
var binarysearch = require('./');
describe("binary search", function() {
var array = [1, 2, 3, 4, 5, 6];
var array2 = [3, 6, 10, 12, 15, 20, 22, 25, 27, 29, 41, 45, 46, 58];
it("should return search path", function() {
expect(binarysearch(array, 3)).to.eql([3]);
expect(binarysearch(array, 1)).to.eql([3, 1]);
expect(binarysearch(array, 5)).to.eql([3, 5]);
expect(binarysearch(array, 6)).to.eql([3, 5, 6]);
});
it("should search elements", function() {
expect(binarysearch(array2, 29).pop()).to.equal(29);
expect(binarysearch(array2, 15).pop()).to.equal(15);
expect(binarysearch(array2, 7).pop()).to.not.equal(7);
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment