javascript - Khan academy Algorithm: Binary Search Solution -


i working towards algorithms in khan academy : https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/p/challenge-binary-search of code below results in -1 ? why that? binary search wont work efficiently ?

    var dosearch = function(array, targetvalue) {     var min = 0;     var max = array.length - 1;     var guess;      while(min < max) {         guess = math.floor((max + min) / 2);          if (array[guess] === targetvalue) {             return guess;         }         else if (array[guess] < targetvalue) {             min = guess + 1;         }         else {             max = guess - 1;         }      }      return -1; };  var primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,          41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97];  for(var i=0;i<primes.length;i++){     var result = dosearch(primes,primes[i]);     console.log("found prime @ index of " + primes[i] +" @ " + result);     } 

results:

found prime @ index of 2 @ 0 found prime @ index of 3 @ -1 found prime @ index of 5 @ 2 found prime @ index of 7 @ 3 found prime @ index of 11 @ -1 found prime @ index of 13 @ 5 found prime @ index of 17 @ 6 found prime @ index of 19 @ -1 found prime @ index of 23 @ 8 found prime @ index of 29 @ -1 found prime @ index of 31 @ 10 found prime @ index of 37 @ -1 found prime @ index of 41 @ 12 found prime @ index of 43 @ 13 found prime @ index of 47 @ -1 found prime @ index of 53 @ 15 found prime @ index of 59 @ 16 found prime @ index of 61 @ -1 found prime @ index of 67 @ 18 found prime @ index of 71 @ 19 found prime @ index of 73 @ -1 found prime @ index of 79 @ 21 found prime @ index of 83 @ -1 found prime @ index of 89 @ 23 found prime @ index of 97 @ -1 

what missing?

you terminating loop - min == max valid condition.

change loop

while(min <= max) {     guess = math.floor((max + min) / 2);      if (array[guess] === targetvalue) {         return guess;     }     else if (array[guess] < targetvalue) {         min = guess + 1;     }     else {         max = guess - 1;     }  } 

i output of

vm153:30 found prime @ index of 2 @ 0 vm153:30 found prime @ index of 3 @ 1 vm153:30 found prime @ index of 5 @ 2 vm153:30 found prime @ index of 7 @ 3 vm153:30 found prime @ index of 11 @ 4 vm153:30 found prime @ index of 13 @ 5 vm153:30 found prime @ index of 17 @ 6 vm153:30 found prime @ index of 19 @ 7 vm153:30 found prime @ index of 23 @ 8 vm153:30 found prime @ index of 29 @ 9 vm153:30 found prime @ index of 31 @ 10 vm153:30 found prime @ index of 37 @ 11 vm153:30 found prime @ index of 41 @ 12 vm153:30 found prime @ index of 43 @ 13 vm153:30 found prime @ index of 47 @ 14 vm153:30 found prime @ index of 53 @ 15 vm153:30 found prime @ index of 59 @ 16 vm153:30 found prime @ index of 61 @ 17 vm153:30 found prime @ index of 67 @ 18 vm153:30 found prime @ index of 71 @ 19 vm153:30 found prime @ index of 73 @ 20 vm153:30 found prime @ index of 79 @ 21 vm153:30 found prime @ index of 83 @ 22 vm153:30 found prime @ index of 89 @ 23 vm153:30 found prime @ index of 97 @ 24 

Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -