Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <h1>Binary Search Demo</h1>
  
  <label for="artists">Artists (pre-sorted and separated by comma):</label>
  <input type="text" id="artists" style="width: 100%" value="ABBA, Beyonce, Pharrell, Queen, Snoop Dogg"/>
  <label for="search-query">Search Query</label>
  <input type="text" id="search-query" style="width: 100%" value="Queen"/>
  <button onclick="runSearch()">Search</button>
  
  <h2>Search Results</h2>
  <p id="results"></p>
</body>
</html>
 
function binarySearch(array, valueToFind) {
    var startIndex  = 0,
        stopIndex   = array.length - 1,
        middleIndex = Math.floor((stopIndex + startIndex)/2);
    while(array[middleIndex] != valueToFind && startIndex < stopIndex){
        // adjust our start or stop index so focus on either the
        // left side or right side of the array
        if (valueToFind < array[middleIndex]){
            stopIndex = middleIndex - 1;
        } else if (valueToFind > array[middleIndex]){
            startIndex = middleIndex + 1;
        }
        // recalculate middle
        middleIndex = Math.floor((stopIndex + startIndex)/2);
    }
    return (array[middleIndex] != valueToFind) ? -1 : middleIndex;
}
function runSearch() {
  var searchQuery = document.getElementById('search-query').value;
  var searchArray = document.getElementById('artists').value.split(', ');
  
  var resultIndex = binarySearch(searchArray, searchQuery);
  
  if (resultIndex > -1) {
    document.getElementById('results').innerText = 'Found "' + searchArray[resultIndex] + '" at index: ' + resultIndex; 
  } else {
    document.getElementById('results').innerText = 'Not Found :(';
  }
}
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
mattgoldspinkpro
0viewers