База ответов ИНТУИТ

Программирование

<<- Назад к вопросам

Пусть дан массив a длины n,элементы которого нестрого возрастают, т.е. соседниеэлементы могут быть равными.Рассмотрим фрагмент программы бинарного поискаэлемента x в массивеa длины n, гдепосле отбрасывания особых ситуаций рассматриваетсяосновной случай:
        . . .        // Утверждение: a[0] <= x && x < a[n-1]        int beg = 0; int end = n-1;        while (end-beg > 1) {            // Инвариант: a[beg] <= x && x < a[end]            int c = (beg + end) / 2;            if (a[c] <= x) {                beg = c;            } else {                end = c;            }        }        if (a[beg] == x) {            *idx = beg;        } else  {            *idx = end;        }        . . .
Пусть значение x содержится в массивев нескольких экземплярах. Индекс какого элементамассива a будет записан в переменную *idx?

(Отметьте один правильный вариант ответа.)

Варианты ответа
Может быть записан индекс любого элемента массива a, равного x.
Индекс первого элемента, равного x.
Индекс поcледнего элемента, равного x. (Верный ответ)
Может быть записан индекс любого элемента массива a, равного x+1.
Похожие вопросы
Пусть дан массив a длины n,элементы которого нестрого возрастают, т.е. соседниеэлементы могут быть равными.Рассмотрим фрагмент программы бинарного поискаэлемента x в массивеa длины n, гдепосле отбрасывания особых ситуаций рассматриваетсяосновной случай:
        . . .        // Утверждение: a[0] < x && x <= a[n-1]        int beg = 0; int end = n-1;        while (end-beg > 1) {            // Инвариант: a[beg] < x && x <= a[end]            int c = (beg + end) / 2;            if (a[c] < x) {                beg = c;            } else {                end = c;            }        }        *idx = end;        . . .
Пусть значение x содержится в массивев нескольких экземплярах. Индекс какого элементамассива a будет записан в переменную *idx?
Пусть дан массив a длины n,элементы которого нестрого возрастают, т.е. соседниеэлементы могут быть равными.Рассмотрим фрагмент программы бинарного поискаэлемента x в массивеa длины n, гдепосле отбрасывания особых ситуаций рассматриваетсяосновной случай:
        . . .        // Утверждение: a[0] < x && x <= a[n-1]        int beg = 0; int end = n-1;        while (end-beg > 1) {            // Инвариант: a[beg] < x && x <= a[end]            int c = (beg + end) / 2;            if (a[c] < x) {                beg = c;            } else if (a[c] > x) {                end = c;            } else {                // Утверждение: x == a[c]                *idx = c;                return true;            }        }        *idx = end;        return (x >= a[end]);        . . .
Пусть значение x содержится в массивев нескольких экземплярах. Индекс какого элементамассива a будет записан в переменную *idx?
Пусть элементы массива aнестрого возрастают (соседние элементы могут быть равными).Дано произвольное значение x, требуетсянайти минимальный индекс i такой, чтоa[i] >= x. Используется идея алгоритмабинарного поиска. Каким должен быть инвариант цикла,в котором рассматривается основной случай после отбрасыванияисключительных ситуаций?(Условие завершения циклаend == beg+1.)
Пусть элементы массива aнестрого возрастают (соседние элементы могут быть равными).Дано произвольное значение x, требуетсянайти максимальный индекс i такой, чтоa[i] <= x. Используется идея алгоритмабинарного поиска. Каким должен быть инвариант цикла,в котором рассматривается основной случай после отбрасыванияисключительных ситуаций?(Условие завершения циклаend == beg+1.)
Пусть элементы массива aнестрого возрастают (соседние элементы могут быть равными).Дано произвольное значение x, требуетсянайти максимальный индекс i такой, чтоa[i] <= x. Используется идея алгоритмабинарного поиска. В приведенном ниже циклерассматривается основной случай после отбрасыванияисключительных ситуаций:
    while (end-beg > 1) {        int c = (beg+end)/2;        if (a[c] <= x)            beg = c;        else            end = c;    }    // ответ в переменной beg
Какое утверждение являетсяинвариантом этого цикла?
Пусть a - целочисленный массив размера n(индекс элементов меняется от 0 до n-1),элементы которого строго возрастают:a[0] < a[1] <... < a[n-1].Определить, содержит ли следующий фрагмент программы ошибку(т.е. действительно ли тело цикла сохраняет инвариант):
// Программа Поиск    int n; int *a;    . . .    // дано: целое n;    //       целочисленный массив a[n],    //           элементы которого строго возрастают    //           a[0] < a[1] < ... < a[n-1]    // надо: найти элемент x в массиве    int x;          // искомый элемент    . . .           // рассматриваются исключительные случаи    // общий случай    // утверждение: a[0] < x  &&  x <= a[n-1];    int b = 0; int e = n - 1;    while (e - b > 1) {        Invariant: a[b] < x  &&  x <= a[e]        int c := (a + b)/2; // c - целая часть (a+b)/2        if (x < a[c]) {            e = c;  // выбираем левую половину отрезка        } else {            b = c;  // выбираем правую половину        }    }    // утверждение: b == e - 1   &&    //              a[b] < x  &&  x <= a[e]
Пусть функцияf(x) = p*x2 + q*x + r(многочлен степени 2) задана на отрезке [a, b].Пусть отрезок [a, b] разделен на 4 равных части;обозначим концы этих отрезков черезx0, x1,x2, x3, x4:
    h = (b-a)/4, xi = a+i*h, i = 0,1,2,3,4.
Обозначим
    yi = f(xi).
Чему равен интеграл функции f(x)по отрезку [a, b]? Отметьте все правильные ответы.
Пусть w - последовательностьцелых чисел, F(W) - максимальная изсумм нескольких подряд идущих элементовпоследовательности w.Например, для последовательностиw={1, -2, 3, 4, -1, 5, -2, -3, 4}максимальную сумму образуют элементы с третьего по шестой:F(w)=3+4-1+5=11.Какие из перечисленных ниже функцийявляются индуктивным расширением функции F?Укажите все правильные варианты.
Для записи n-значных чисел в системе счисления с основаниемb требуется n разрядов,каждый из которых может находитьсяв b состояниях. Таким образом, суммарное число состоянийравно произведению n*b.Рассмотрим двоичную (b=2), троичную(b=3) и десятичную (b=10) системы счисления.Какая из нихнаиболее экономна по суммарному числу состояний для записичисел в диапазоне 0..N,где N - некоторое достаточно большое число?
Пусть расположенный в статической памятицелочисленный массив a описан как
static int a[] = {    10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
Пусть в программе задана функция суммирования массивас прототипом
int sum(const int *m, int n);
где m - константный указатель на началомассива, n - число его элементов. Укажите,чему будет равно значение переменной s врезультате выполнения следующего фрагмента программы:
    int s = sum(a+3, 4);