Sha256: bae7dc8dcac331cb2a94514c1b06d4043bd100b39811643377a8ec527e5edd34

Contents?: true

Size: 783 Bytes

Versions: 255

Compression:

Stored size: 783 Bytes

Contents

'use strict';

function BinarySearch(array) {

  //check if array is sorted
  var arrayIsSorted = true;
  for (var i = 1; i < array.length; i++) {
    if (array[i] < array[i - 1]) arrayIsSorted = false;
  }

  //instantiate the array if sorted
  if (arrayIsSorted) this.array = array;

  //use binary search for indexOf
  this.indexOf = function(value) {
    return recursiveSearch(this.array, value, 0, this.array.length);
  };
}


function recursiveSearch(array, value, start, end) {
  if (start == end) return -1;

  var mid = Math.floor((start + end) / 2);

  if (array[mid] > value) {
    return recursiveSearch(array, value, start, mid);
  }
  if (array[mid] < value) {
    return recursiveSearch(array, value, mid + 1, end);
  }
  return mid;
}

module.exports = BinarySearch;

Version data entries

255 entries across 255 versions & 1 rubygems

Version Path
trackler-2.1.0.19 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.18 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.17 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.16 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.15 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.14 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.13 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.12 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.11 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.10 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.9 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.8 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.7 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.6 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.5 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.4 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.3 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.2 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.1 tracks/javascript/exercises/binary-search/example.js
trackler-2.1.0.0 tracks/javascript/exercises/binary-search/example.js