JSFiddle - React, Tailwind, and code Playground

by Jonathon Mascorella

HTML

<script src="https://cdn.jsdelivr.net/jquery.validation/1.15.1/jquery.validate.js"></script>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<div id="myform">
  <input type="number" class="array_length"/>
  <label>Array Length</label>
  <br />
  <input type="number" class="number_in"/>
  <button type="button" class="search">
  Search!
  </button>
</div>
<div class="output">
  <span class="linear_result"></span>
  <span class="binary_result"></span>
</div>

JavaScript

//Make an array with a set of numbers in it
var integerSet = function(num) {
if(!num || num < 1){ num = 10000;}
	int_array = [];
	for(i=0; i < num; i++){
  	int_array.push(i);
  }
  return int_array;
}


var runLinearSearch = function(list, target){
  var result;
  var value;
  console.log(target);
  for(var i = 0; i < list.length; i++){
    value = list[i];
    if(value === target){
      result = i;
      break;
    }
  }
  return result;
};

var runBinarySearch = function(items, value) {
	//Copyright 2009 Nicholas C. Zakas. All rights reserved.
	//MIT-Licensed, see source file
    var startIndex  = 0,
        stopIndex   = items.length - 1,
        middle      = Math.floor((stopIndex + startIndex)/2);

    while(items[middle] != value && startIndex < stopIndex){

        //adjust search area
        if (value < items[middle]){
            stopIndex = middle - 1;
        } else if (value > items[middle]){
            startIndex = middle + 1;
        }

        //recalculate middle
        middle = Math.floor((stopIndex + startIndex)/2);
    }

    //make sure it's the right value
    return (items[middle] != value) ? -1 : middle;
}

// Linear search
$('.search').click(function() {
	var array_length = $(".number_in").val();
  if((array_length / 2) == 0){ array_length = 10000; }
  //Get an integer set of array_length numbers
  var newIntegerSet = integerSet(array_length);
  
  //Get the value to search
	var search_value = $(".number_in").val();
  
  var t0 = performance.now();
	var lsResult = runLinearSearch(newIntegerSet, search_value);
	var t1 = performance.now();
	console.log("Call to runLinearSearch took " + (t1 - t0) + " milliseconds.")
  
  // Binary Search
  var t0 = performance.now();
	var lsResult = runBinarySearch(newIntegerSet, search_value);
	var t1 = performance.now();
	console.log("Call to runBinarySearch took " + (t1 - t0) + " milliseconds.")
});