In Javascript, we can add new attributes or methods to objects through the prototype keyword. Here is a method to add a binary search function to an Array object:
Array.prototype.binarySearch = function(obj)
{
var value = 0;
var left = 0;
var right= this.length;
while(left <= right)
{
var center = Math.floor((left right)/2);
if( this[center] == obj)
{
value = center;
}
if(obj < this[center])
{
right = center - 1;
}
else
{
left = center 1;
}
}
alert(value);
}
//The following is the test code:
function testArrayBinarySearch()
{
var array = new Array();
var key = 678;
var number = 1000;
for (i = 0; i < number ; i )
{
array.push(i);
}
array.binarySearch(key);
}
window.onload = function()
{
testArrayBinarySearch();
}
The following is the foreign code
javascript dichotomy//Copyright 2009 Nicholas C. Zakas. All rights reserved.
//MIT- Licensed, see source file
function binarySearch(items, value) {
var startIndex = 0,
stopIndex = items.length - 1,
middle = Math.floor((stopIndex startIndex)/2);
while(items[middle] != value && startIndex < stopIndex){
//adjust search area (adjust search area)
if (value < items[middle]){
stopIndex = middle - 1;
} else if (value > items[middle]){
startIndex = middle 1;
}
//recalculate middle (recalculate the middle item index)
middle = Math.floor((stopIndex startIndex)/2) ;
}
//make sure it's the right value (make sure to return the correct value)
return (items[middle] != value) ? -1 : middle;
}