Ich habe versucht, den binären Suchalgorithmus in meinem Codebeispiel zu verwenden, aber es läuft nicht wie erwartet. Ich weiß nicht warum. Bitte erläutern Sie mirBinäre Suche nicht ausgeführt?
var array = [1, 4, 6, 8, 9, 12, 15, 17, 19, 34, 55, 78, 80];
function binarySearch (array, numberToSearch) {
var firstIndex = 0;
var lastIndex = array.length - 1;
var currentIndex;
var currentElement;
currentIndex = (lastIndex + firstIndex)/2 | 2;
currentElement = array[currentIndex];
while (firstIndex <= lastIndex) {
if (numberToSearch === currentElement) {
// found
console.log(currentIndex);
return currentIndex;
} else if (numberToSearch < currentElement) {
lastIndex = currentIndex - 1;
currentIndex = (lastIndex + firstIndex)/2 | 2;
currentElement = array[currentIndex];
} else if (numberToSearch > currentElement) {
firstIndex = currentIndex + 1;
currentIndex = (lastIndex + firstIndex)/2 | 2;
currentElement = array[currentIndex];
}
}
return -1;
}
binarySearch(array, 12);
Ich drucke sollte: 5, aber nichts passiert
Ich denke, Sie Binary Suche nicht Binary Art gemeint? – abhishekkannojia
Ich denke, dass Sie nicht zulassen, dass die Schleife mit diesen Returns -1 vollständig ausgeführt wird. Ich denke, Sie mischen eine iterative Lösung mit einer rekursiven Lösung. – 82Tuskers
@ 82Tuskers Ich gebe -1 für die No-Results-Bedingung zurück. Aber ich denke, es ist nicht das Problem –