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
Post a Comment