Co prawda to kod w JS ale bez problemu można pozmieniać na Pythona (nie chce mi się przepisywać kodu), poza tym przy przepisywaniu samemu można lepiej załapać o co chodzi
Pierwszy sposób iteracyjnie
function binarySearch(array, number) {
const start = 0;
const end = array.length - 1;
let index = undefined;
while (start <= end) {
const mid = Math.floor((start + end) / 2);
const element = array[mid];
if (element === number) {
index = mid;
break;
}
else if (number < element) {
end = mid - 1;
}
else if (number > element) {
start = mid + 1;
}
}
if (index !== undefined)
return index;
return 'Element not found';
}
Drugi sposób z użyciem rekurencji
function binarySearchRecursive(array, number, start, end) {
if (start > end)
return false;
const mid = Math.floor((start + end) / 2);
if (array[mid] === number)
return true;
else if (number < array[mid])
return binarySearchRecursive(array, number, start, mid - 1);
else
return binarySearchRecursive(array, number, mid + 1, end);
}