我試着在我的代碼示例中使用二分搜索算法,但它沒有像我期望的那樣運行。我不知道爲什麼。請解釋我二進制搜索未運行?
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);
我應該打印:5,但沒有happend
我想,你的意思二進制搜索不是二進制排序不優化? – abhishekkannojia
我認爲你不允許循環運行完全使用那些返回-1。我認爲你正在迭代迭代解決方案和遞歸解決方案。 – 82Tuskers
@ 82Tuskers我沒有結果條件返回-1。但我認爲這不是問題 –