Как изменить программу так, чтобы она возвращала значение = 8 index 8, то есть первый индекс «8» справа (а не index 6 теперь, т.е. первый индекс «8» слева). Для значения = 7 программа корректно возвращает индекс 5 (значение массива 6).
#include "pch.h"
#include <iostream>
int arr[10]{0, 2, 3, 5, 5, 6, 8, 8, 8, 9};
int arr_size = sizeof(arr) / sizeof(arr[0]);
int main()
{
for (int i = 0; i <= arr_size; i++)
{
printf("%i\n", arr[i]);
}
printf("\n");
int left = 0;
int right = arr_size - 1;
int middle = 0;
int value = 8 ;
int x = 0;
int index = 0;
//* Searching for value in ascending sorted array
while (left <= right) {
middle = (left + right) / 2;
if (arr[middle] <= value) {
x = arr[middle];
index = middle;
}
if (value > arr[middle]) {
left = middle + 1;
}
else {
right = middle - 1;
}
}
printf("Found %i at position %i\n", x, index);
}