I have written a binary search algorithm in JavaScript:
function binarysearch(number, array) {
let left = 0;
let right = array.length - 1;
let middle;
while (right != left) {
middle = Math.floor(left + (right - left) / 2);
if (array[middle] == number) {
return middle;
}
if (array[middle] < number) {
left = array[middle];
if (array[middle + 1] == number) {
return middle + 1;
}
}
if (array[middle] > number) {
right = array[middle];
if (array[middle - 1] == number) {
return middle - 1;
}
}
}
return -1;
}
I wanted to ask if I can improve this algorithm to search faster or if some mistake is made here?
EDIT:
thank you guys for your help, this solution should work correctly now:
function binarysearch(number, array) {
let left = 0;
let right = array.length - 1;
let middle;
while (left <= right) {
middle = Math.floor(left + (right - left) / 2);
if (array[middle] == number) {
return middle;
}
if (array[middle] < number) {
left = middle + 1;
}
if (array[middle] > number) {
right = middle - 1;
}
}
return -1;
}