Главная /
Программирование /
Пусть дан массив a длины n, элементы которого нестрого возрастают, т.е. соседние элементы могут быть равными. Рассмотрим фрагмент программы бинарного поиска элемента x в массиве a длины n, где после отбрасывания особых ситуаций рассматривается основной сл
Пусть дан массив 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
?
вопрос
Правильный ответ:
Индекс первого элемента, равного
x
.
Индекс поcледнего элемента, равного
x
.
Может быть записан индекс любого элемента
массива
a
, равного
x
.
Индекс поcледнего элемента, равного
x-1
.
Индекс первого элемента, равного
x+1
.
Сложность вопроса
84
Сложность курса: Программирование
84
Оценить вопрос
Комментарии:
Аноним
Я сотрудник деканата! Немедленно сотрите этот ваш сайт с ответами интуит. Немедленно!
27 окт 2019
Аноним
Я провалил зачёт, почему я не углядел этот чёртов сайт с всеми ответами по интуит месяц назад
16 мар 2017
Аноним
Зачёт всё. Бегу отмечать отмечать сессию интуит
10 сен 2016
Другие ответы на вопросы из темы программирование интуит.
- # Алгоритм сортировки называется стабильным, если он сохраняет относительный порядок равных элементов. Среди перечисленных ниже алгоритмов сортировки (имеются в виду их классические варианты) отметьте все стабильные.
- # В алгоритме сортировки слиянием "In Place Merge Sort", не использующем дополнительной памяти, применяется функция mergeBlocks слияния двух упорядоченных блоков, т.е. подмассивов длины m и n, реализованная рекурсивно. За какое время работает эта функция?
- # Рассмотрим реализацию матрицы вещественных чисел, размеры которой определяются в процессе работы программы, через массив указателей на начала строк, захватываемый в динамической памяти. Каждая строка также представляет собой отдельный массив в динамической памяти: typedef double* doubleptr; int m, n; // Размеры матрицы: число строк, столбцов . . . doubleptr* a = new doubleptr[m]; for (int i = 0; i < m; ++i) { a[i] = new double[n]; } // a[i][j] -- элемент i-й строки и j-го столбца Сколько обращений к памяти необходимо сделать, чтобы прочесть элемент матрицы в i-й строке и j-м столбце (считая, что значения i и j уже находятся в регистрах процессора)?
- # Рассмотрим реализацию матрицы вещественных чисел размера m строк на n столбцов при помощи линейного массива, в котором хранятся сначала элементы нулевой строки матрицы, затем первой и т.д., в конце - элементы (m-1)-й строки: int m, n; // Размеры матрицы: число строк, столбцов . . . double* a = new double[m*n]; // a[i*n + j] -- элемент i-й строки и j-го столбца Пусть функция с прототипом void transp(double* a, int m, int n); реализует транспонирование матрицы, при выполнении которого строки матрицы становятся столбцами, столбцы - строками, а матрица размера m на n превращается в матрицу размера n на m Пусть эта функция применяется к прямоугольной матрице, содержащей 3 строки и 5 столбцов, элементы которой хранятся в линейном массиве a. Сколько элементов массива a при этом останутся на своем месте?
- # Какие константы можно в практическом программировании использовать в качестве воображаемого значения "минус бесконечность" при работе с вещественными числами типа float? Укажите все правильные варианты.