Nodejs Array Search Binary binarySearch(value)

Here you can find the source of binarySearch(value)

Method Source Code

Array.prototype.binarySearch = function(value) {
    'use strict';

    if(!value){// ww w.  j  a  v a2 s  .c o m
        return null;
    }

    var left = 0,
        right = this.length-1,
        find = false,
        middle = null;

    while( left <= right && !find ){
        middle = parseInt(left+(right-left)/2);
        
        if(this[middle]<value){
            left = middle + 1;
        } else  if(this[middle] > value){
            right = middle -1;
        } else {
            find = true;
        }
    }

    if(find){
        return middle;
    } else {
        return false;
    }
};

var vector = [1, 2, 3, 5, 6, 7, 9, 82];

console.log(vector);

console.log(vector.binarySearch(7));

Related

  1. binarySearch(n)
    "use strict";
    var assert = require('assert'); 
    Array.prototype.binarySearch = function(n) {
      var O = Object(this);
      var f = function(lo,hi) {
        var mid = Math.floor((lo + hi) / 2);
        if (O[mid] === n) {
          return mid;
        if (lo === mid || hi === mid) {
          return -(mid+1);
        if(O[mid] < n) {
          return f(mid,hi);
        if (O[mid] > n) {
          return f(lo,mid);
      };
      return f(0, O.length);
    };
    describe('binary search', function() {
      it('doesnt find anything in an empty list', function() {
        assert.equal(-1, [].binarySearch(7));
      });
      it('finds a single element', function() {
        assert.equal(0, [0].binarySearch(0));
      });
      it('finds the middle element', function() {
        assert.equal(1, [1,2,3].binarySearch(2));
      });
      it('finds up', function() {
        assert.equal(2, [1,2,3].binarySearch(3));
      });
      it('finds down', function() {
        assert.equal(0, [1,2,3].binarySearch(1));
      });
      it('finds insertion index', function() {
        assert.equal(-2, [1,2,4,5,6].binarySearch(3));
      });
    });
    
  2. binarySearch(num)
    var input = [ 1, 2, 2, 3, 4, 4, 5, 6, 8, 10 ];
    Array.prototype.binarySearch = function(num) {
        var _this = this;
        function search(left, right) {
            if(right < left) return -1;
            else if(left === right) {
                return checkIndexForNum(left);
            var mid = Math.floor((left + right) / 2);
    ...
    
  3. binarySearch(searchElement)
    Array.prototype.binarySearch = function (searchElement) {
        'use strict';
        var minIndex = 0;
        var maxIndex = this.length - 1;
        var currentIndex;
        var currentElement;
        while (minIndex <= maxIndex) {
            currentIndex = (minIndex + maxIndex) / 2 | 0;
            currentElement = this[currentIndex];
    ...
    
  4. binarySearch(val)
    Array.prototype.binarySearch = function(val){
      var min = 0;
      var max = this.length -1;
      var currentIndex;
      var currentElement;
      while (min <= max) {
        currentIndex = Math.floor((min +max) / 2);
        currentElement = this[currentIndex];
        if (currentElement > val) {
    ...
    
  5. binarySearch(val)
    Array.prototype.binarySearch = function(val){
      var keeper = 0;
      var answer = -1;
      function recursive(arr){
        var len = arr.length;
        var start = Math.floor(len / 2);
        var current = arr[start];
        if (current === val){
          answer = start + keeper;
    ...
    
  6. binarySearch(value)
    Array.prototype.binarySearch = function(value){
        var items = this;
        console.log(items.length);
        var startIndex  = 0;
        var stopIndex = items.length - 1;
        var middle = Math.floor((stopIndex + startIndex)/2);
        while(items[middle] != value && startIndex < stopIndex){
            if (value < items[middle]){
                stopIndex = middle - 1;
    ...
    
  7. binarySearchbinaryIndexOf;
    function binaryIndexOf(searchElement) {
        'use strict';
        var minIndex = 0;
        var maxIndex = this.length - 1;
        var currentIndex = -1;
        var currentElement;
        while (minIndex <= maxIndex) {
            currentIndex = (minIndex + maxIndex) / 2 | 0;
            currentElement = this[currentIndex];
    ...
    
  8. binarySearchbinarySearch(val, from, to)
    Array.prototype.binarySearch = function binarySearch(val, from, to){
        if (from === undefined) {
            from = 0;
        if (to === undefined) {
            to = this.length-1;
        var mid = Math.ceil((from+to)/2),
            midVal = this[mid];
    ...
    
  9. binary_search(val, left, right)
    Array.prototype.binary_search = function(val, left, right) {
        if (typeof left === 'undefined') left = 0;
        if (typeof right === 'undefined') right = this.length - 1;
        if (left > right) return null;
        var mid = (left + right) >> 1;
        if (val == this[mid]) {
            return mid;
        } else if (val > this[mid]) {
            return this.binary_search(val, mid + 1, right);
    ...