Początki w JavaScript. Kod wyszukiwania binarnego-nie dziala

0
var doSearch = function(array, targetValue) {
	var min = 0;
	var max = array.length - 1;
    var guess;
    while(max >= min){
    guess = (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];

var result = doSearch(primes, 73);
println("Found prime at index " + result);

Program.assertEqual(doSearch(primes, 73), 20);

Mam problem w tym kodzie, niepoprawnie liczy.
Nie mam pojęcia co źle robię.
Licze na pomoc

1

Nie zaokragliles guess. Gdy zostanie sie nieprzarzysta liczba elementow, to nigdy nie znajdzie elementu.

guess = Math.round((max+min)/2);
1

można też

guess = (max + min) / 2 | 0

http://ideone.com/uYfJA5

0

Dziekuje bardzo ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1