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

Основы программирования

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

Пусть требуется реализовать упорядоченный набор элементов,причем элемент может повторяться в наборе несколько раз.Элементы можно добавлять к набору и удалять из набора. Какаяструктура данных лучше всего подходит для этого?

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

Варианты ответа
Динамический массив.
Линейный двунаправленный список.
Множество, реализованное на базе упорядоченного бинарного дерева.
Нагруженное множество, реализованное на базе упорядоченного бинарного дерева. (Верный ответ)
Похожие вопросы
Пусть требуется реализовать упорядоченныйнабор различных элементов, при этом элементы можнодобавлять и удалять. Какая структура данныхлучше всего подходит для этого?
Текст представляет собой последовательность строк.При этом строки можно изменять, удалять и добавлятьв любое место текста. Какая структура данныхлучше всего подходит для хранения и редактированиятакого текста?
Элементы множества хранятся в массиве в возрастающемпорядке. Пусть множество содержит 12 элементов.Сколько операций сравнения достаточно выполнить,чтобы найти произвольный элемент в множестве или убедиться в егоотсутствии?
Элементы множества хранятся в массиве в возрастающемпорядке. Пусть множество содержит 10 элементов.Сколько операций сравнения достаточно выполнить,чтобы найти произвольный элемент в множестве или убедиться в егоотсутствии?
Рассмотрим непрерывную реализацию множества с помощьюбинарного поиска. Пусть множество содержит миллион элементов.Сколько операций сравнения может быть выполнено при поискеэлемента?
Даны очередь и стек элементов одного и того же типа. Можно линаписать программу, которая удаляет из очереди предпоследнийэлемент и не меняет порядка остальных элементов? При этомразрешается использовать стек как вспомогательную структуру данных;другими структурами (за исключением простых переменных)пользоваться запрещено.
Следующий фрагмент программы вычисляет сумму четырехпоследних элементов последовательности p:
    вещ последовательность p;    вещ x, y, z, t;    . . .    x := 0.0; y := 0.0; z := 0.0; t := 0.0;    встать в начало последовательности p;    цикл пока есть непрочитанные элементы в посл-ти p    | x := y; y := z; z := t;    | прочесть очередной элемент посл-ти p в (вых: t);    конец цикла    ответ := x + y + z + t;
В нем используются четыре вспомогательные переменныеx, y, z, t. Можно ли упроститьпрограмму, использовав меньшее количество вспомогательныхпеременных? (Последовательность разрешается читать только один раз.)
На базе какой структуры данных удобно реализовать очередь?
Пусть a — вещественный массив размера n(индекс элементов меняется от 0 до n-1).Определить, содержит ли следующий фрагмент программы ошибку(т.е. действительно ли тело цикла сохраняет инвариант):
// Программа Быстрая сортировкадано: цел n;      вещ a[n]; // вещественный массив размера nцел m;          // индекс медианыутверждение: n >= 2  и             0 <= m  и  m < n;надо: // разделить массив на три части:      // 1) слева элементы, меньшие медианы;      // 2) в центре медиана;      // 3) справа элементы, большие или равные медиане.цел i, j, k; вещ t;i := (-1); j := n;цикл пока i+1 < m  или  m < j-1| инвариант: a[0], a[1], ..., a[i] < a[m]  и|            a[m] <= a[j], a[j+1], ..., a[n-1]  и|            i < m  и  m < j|| если i+1 < m| | то| |   если a[i+1] < a[m]| |   | то i := i+1;    // расширяем левую часть| |   иначе если j-1 > m| |   | иначе| |   | утверждение: a[i+1] >= a[m];| |   | // меняем местами элементы a[i+1] и a[j-1]| |   | t := a[i+1]; a[i+1] := a[j-1]; a[j-1] := t;| |   | если j-1 == m| |   | | то m := i+1;  // новое положение медианы| |   | конец если| |   | j := j-1;       // расширяем правую часть| |   конец если| | иначе| |   утверждение: j-1 > m;| |   . . . // этот случай рассматривается аналогично| |   . . . // случаю i+1 < m| || конец есликонец циклаутверждение: 0 <= m  и  m < n  и             a[0], a[1], ..., a[m-1] < a[m]   и             a[m] <= a[m+1], a[m+2], ..., a[n-1]
Пусть a — целочисленный массив размера n(индекс элементов меняется от 0 до n-1),элементы которого строго возрастают:a[0] < a[1] <... < a[n-1].Определить, содержит ли следующий фрагмент программы ошибку(т.е. действительно ли тело цикла сохраняет инвариант):
// Программа Поискдано: цел n;      цел a[n]; // a[0] < a[1] < ... < a[n-1]цел x;          // искомый элементцел b, e, c;. . .           // рассматриваются исключительные случаиутверждение: a[0] < x  и  x <= a[n-1];  // общий случайb := 0; e := n - 1;цикл пока e - b > 1| инвариант: a[b] < x  и  x <= a[e];| c := (b + e) / 2; // c -- целая часть (b+e)/2| если x < a[c]| | то    e := c;   // выбираем левую половину отрезка| | иначе b := c;   // выбираем правую половину отрезка| конец есликонец циклаутверждение: b == e - 1  и             a[b] < x  и  x <= a[e];